@solidxai/core 0.1.12 → 0.1.13-beta.10

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 (687) hide show
  1. package/CHANGELOG.md +3786 -0
  2. package/dist/commands/run-tests.command.d.ts +7 -1
  3. package/dist/commands/run-tests.command.d.ts.map +1 -1
  4. package/dist/commands/run-tests.command.js +49 -3
  5. package/dist/commands/run-tests.command.js.map +1 -1
  6. package/dist/commands/seed.command.d.ts +2 -0
  7. package/dist/commands/seed.command.d.ts.map +1 -1
  8. package/dist/commands/seed.command.js +21 -0
  9. package/dist/commands/seed.command.js.map +1 -1
  10. package/dist/constants/chatter-message.constants.d.ts +1 -0
  11. package/dist/constants/chatter-message.constants.d.ts.map +1 -1
  12. package/dist/constants/chatter-message.constants.js +3 -1
  13. package/dist/constants/chatter-message.constants.js.map +1 -1
  14. package/dist/constants/draft-publish-fields.d.ts +2 -0
  15. package/dist/constants/draft-publish-fields.d.ts.map +1 -0
  16. package/dist/constants/draft-publish-fields.js +5 -0
  17. package/dist/constants/draft-publish-fields.js.map +1 -0
  18. package/dist/constants/media-file-types.d.ts +9 -0
  19. package/dist/constants/media-file-types.d.ts.map +1 -1
  20. package/dist/constants/media-file-types.js +27 -1
  21. package/dist/constants/media-file-types.js.map +1 -1
  22. package/dist/constants/user.constants.d.ts +2 -0
  23. package/dist/constants/user.constants.d.ts.map +1 -0
  24. package/dist/constants/user.constants.js +5 -0
  25. package/dist/constants/user.constants.js.map +1 -0
  26. package/dist/controllers/action-metadata.controller.d.ts +1 -1
  27. package/dist/controllers/action-metadata.controller.js +1 -1
  28. package/dist/controllers/agent-event.controller.d.ts +1 -1
  29. package/dist/controllers/agent-event.controller.js +1 -1
  30. package/dist/controllers/agent-session.controller.d.ts +1 -1
  31. package/dist/controllers/agent-session.controller.js +1 -1
  32. package/dist/controllers/chatter-message.controller.d.ts +5 -0
  33. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  34. package/dist/controllers/chatter-message.controller.js +14 -0
  35. package/dist/controllers/chatter-message.controller.js.map +1 -1
  36. package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -1
  37. package/dist/controllers/dashboard-user-layout.controller.js +1 -1
  38. package/dist/controllers/email-template.controller.d.ts +1 -1
  39. package/dist/controllers/email-template.controller.js +1 -1
  40. package/dist/controllers/export-template.controller.d.ts +1 -1
  41. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  42. package/dist/controllers/export-template.controller.js +6 -4
  43. package/dist/controllers/export-template.controller.js.map +1 -1
  44. package/dist/controllers/export-transaction.controller.d.ts +1 -1
  45. package/dist/controllers/export-transaction.controller.js +1 -1
  46. package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -1
  47. package/dist/controllers/import-transaction-error-log.controller.js +1 -1
  48. package/dist/controllers/import-transaction.controller.d.ts +1 -1
  49. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  50. package/dist/controllers/import-transaction.controller.js +7 -7
  51. package/dist/controllers/import-transaction.controller.js.map +1 -1
  52. package/dist/controllers/list-of-values.controller.d.ts +1 -1
  53. package/dist/controllers/list-of-values.controller.js +1 -1
  54. package/dist/controllers/locale.controller.d.ts +1 -1
  55. package/dist/controllers/locale.controller.js +1 -1
  56. package/dist/controllers/mcp-audit-log.controller.d.ts +1 -1
  57. package/dist/controllers/mcp-audit-log.controller.js +1 -1
  58. package/dist/controllers/media.controller.d.ts +2 -2
  59. package/dist/controllers/media.controller.d.ts.map +1 -1
  60. package/dist/controllers/media.controller.js +13 -8
  61. package/dist/controllers/media.controller.js.map +1 -1
  62. package/dist/controllers/menu-item-metadata.controller.d.ts +1 -1
  63. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  64. package/dist/controllers/model-sequence.controller.d.ts +1 -1
  65. package/dist/controllers/model-sequence.controller.js +1 -1
  66. package/dist/controllers/module-package.controller.d.ts.map +1 -1
  67. package/dist/controllers/module-package.controller.js +2 -3
  68. package/dist/controllers/module-package.controller.js.map +1 -1
  69. package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
  70. package/dist/controllers/mq-message-queue.controller.js +1 -1
  71. package/dist/controllers/mq-message.controller.d.ts +1 -1
  72. package/dist/controllers/mq-message.controller.js +1 -1
  73. package/dist/controllers/permission-metadata.controller.d.ts +1 -1
  74. package/dist/controllers/permission-metadata.controller.js +1 -1
  75. package/dist/controllers/role-metadata.controller.d.ts +1 -1
  76. package/dist/controllers/role-metadata.controller.js +1 -1
  77. package/dist/controllers/saved-filters.controller.d.ts +1 -1
  78. package/dist/controllers/saved-filters.controller.js +1 -1
  79. package/dist/controllers/scheduled-job.controller.d.ts +1 -1
  80. package/dist/controllers/scheduled-job.controller.js +1 -1
  81. package/dist/controllers/security-rule.controller.d.ts +1 -1
  82. package/dist/controllers/security-rule.controller.js +1 -1
  83. package/dist/controllers/sms-template.controller.d.ts +1 -1
  84. package/dist/controllers/sms-template.controller.js +1 -1
  85. package/dist/controllers/user-activity-history.controller.d.ts +1 -1
  86. package/dist/controllers/user-activity-history.controller.js +1 -1
  87. package/dist/controllers/user-view-metadata.controller.d.ts +1 -1
  88. package/dist/controllers/user-view-metadata.controller.js +1 -1
  89. package/dist/controllers/user.controller.d.ts +2 -2
  90. package/dist/controllers/user.controller.js +2 -2
  91. package/dist/controllers/view-metadata.controller.d.ts +3 -3
  92. package/dist/controllers/view-metadata.controller.js +1 -1
  93. package/dist/controllers/workflow-definition.controller.d.ts +38 -0
  94. package/dist/controllers/workflow-definition.controller.d.ts.map +1 -0
  95. package/dist/controllers/workflow-definition.controller.js +272 -0
  96. package/dist/controllers/workflow-definition.controller.js.map +1 -0
  97. package/dist/controllers/workflow-execution-artifact.controller.d.ts +24 -0
  98. package/dist/controllers/workflow-execution-artifact.controller.d.ts.map +1 -0
  99. package/dist/controllers/workflow-execution-artifact.controller.js +179 -0
  100. package/dist/controllers/workflow-execution-artifact.controller.js.map +1 -0
  101. package/dist/controllers/workflow-execution-log.controller.d.ts +24 -0
  102. package/dist/controllers/workflow-execution-log.controller.d.ts.map +1 -0
  103. package/dist/controllers/workflow-execution-log.controller.js +179 -0
  104. package/dist/controllers/workflow-execution-log.controller.js.map +1 -0
  105. package/dist/controllers/workflow-execution.controller.d.ts +29 -0
  106. package/dist/controllers/workflow-execution.controller.d.ts.map +1 -0
  107. package/dist/controllers/workflow-execution.controller.js +227 -0
  108. package/dist/controllers/workflow-execution.controller.js.map +1 -0
  109. package/dist/controllers/workflow-secret.controller.d.ts +24 -0
  110. package/dist/controllers/workflow-secret.controller.d.ts.map +1 -0
  111. package/dist/controllers/workflow-secret.controller.js +179 -0
  112. package/dist/controllers/workflow-secret.controller.js.map +1 -0
  113. package/dist/controllers/workflow-step-execution.controller.d.ts +24 -0
  114. package/dist/controllers/workflow-step-execution.controller.d.ts.map +1 -0
  115. package/dist/controllers/workflow-step-execution.controller.js +179 -0
  116. package/dist/controllers/workflow-step-execution.controller.js.map +1 -0
  117. package/dist/controllers/workflow-trigger-execution.controller.d.ts +24 -0
  118. package/dist/controllers/workflow-trigger-execution.controller.d.ts.map +1 -0
  119. package/dist/controllers/workflow-trigger-execution.controller.js +179 -0
  120. package/dist/controllers/workflow-trigger-execution.controller.js.map +1 -0
  121. package/dist/decorators/workflow-field-data-provider.decorator.d.ts +3 -0
  122. package/dist/decorators/workflow-field-data-provider.decorator.d.ts.map +1 -0
  123. package/dist/decorators/workflow-field-data-provider.decorator.js +11 -0
  124. package/dist/decorators/workflow-field-data-provider.decorator.js.map +1 -0
  125. package/dist/decorators/workflow-node-provider.decorator.d.ts +4 -0
  126. package/dist/decorators/workflow-node-provider.decorator.d.ts.map +1 -0
  127. package/dist/decorators/workflow-node-provider.decorator.js +13 -0
  128. package/dist/decorators/workflow-node-provider.decorator.js.map +1 -0
  129. package/dist/dtos/basic-filters.dto.d.ts +0 -1
  130. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  131. package/dist/dtos/basic-filters.dto.js +1 -6
  132. package/dist/dtos/basic-filters.dto.js.map +1 -1
  133. package/dist/dtos/create-workflow-definition.dto.d.ts +14 -0
  134. package/dist/dtos/create-workflow-definition.dto.d.ts.map +1 -0
  135. package/dist/dtos/create-workflow-definition.dto.js +92 -0
  136. package/dist/dtos/create-workflow-definition.dto.js.map +1 -0
  137. package/dist/dtos/create-workflow-execution-artifact.dto.d.ts +22 -0
  138. package/dist/dtos/create-workflow-execution-artifact.dto.d.ts.map +1 -0
  139. package/dist/dtos/create-workflow-execution-artifact.dto.js +139 -0
  140. package/dist/dtos/create-workflow-execution-artifact.dto.js.map +1 -0
  141. package/dist/dtos/create-workflow-execution-log.dto.d.ts +18 -0
  142. package/dist/dtos/create-workflow-execution-log.dto.d.ts.map +1 -0
  143. package/dist/dtos/create-workflow-execution-log.dto.js +116 -0
  144. package/dist/dtos/create-workflow-execution-log.dto.js.map +1 -0
  145. package/dist/dtos/create-workflow-execution.dto.d.ts +33 -0
  146. package/dist/dtos/create-workflow-execution.dto.d.ts.map +1 -0
  147. package/dist/dtos/create-workflow-execution.dto.js +186 -0
  148. package/dist/dtos/create-workflow-execution.dto.js.map +1 -0
  149. package/dist/dtos/create-workflow-secret.dto.d.ts +11 -0
  150. package/dist/dtos/create-workflow-secret.dto.d.ts.map +1 -0
  151. package/dist/dtos/create-workflow-secret.dto.js +74 -0
  152. package/dist/dtos/create-workflow-secret.dto.js.map +1 -0
  153. package/dist/dtos/create-workflow-step-execution.dto.d.ts +27 -0
  154. package/dist/dtos/create-workflow-step-execution.dto.d.ts.map +1 -0
  155. package/dist/dtos/create-workflow-step-execution.dto.js +171 -0
  156. package/dist/dtos/create-workflow-step-execution.dto.js.map +1 -0
  157. package/dist/dtos/create-workflow-trigger-execution.dto.d.ts +25 -0
  158. package/dist/dtos/create-workflow-trigger-execution.dto.d.ts.map +1 -0
  159. package/dist/dtos/create-workflow-trigger-execution.dto.js +158 -0
  160. package/dist/dtos/create-workflow-trigger-execution.dto.js.map +1 -0
  161. package/dist/dtos/execute-workflow.dto.d.ts +7 -0
  162. package/dist/dtos/execute-workflow.dto.d.ts.map +1 -0
  163. package/dist/dtos/execute-workflow.dto.js +11 -0
  164. package/dist/dtos/execute-workflow.dto.js.map +1 -0
  165. package/dist/dtos/update-workflow-definition.dto.d.ts +15 -0
  166. package/dist/dtos/update-workflow-definition.dto.d.ts.map +1 -0
  167. package/dist/dtos/update-workflow-definition.dto.js +97 -0
  168. package/dist/dtos/update-workflow-definition.dto.js.map +1 -0
  169. package/dist/dtos/update-workflow-execution-artifact.dto.d.ts +23 -0
  170. package/dist/dtos/update-workflow-execution-artifact.dto.d.ts.map +1 -0
  171. package/dist/dtos/update-workflow-execution-artifact.dto.js +143 -0
  172. package/dist/dtos/update-workflow-execution-artifact.dto.js.map +1 -0
  173. package/dist/dtos/update-workflow-execution-log.dto.d.ts +19 -0
  174. package/dist/dtos/update-workflow-execution-log.dto.d.ts.map +1 -0
  175. package/dist/dtos/update-workflow-execution-log.dto.js +121 -0
  176. package/dist/dtos/update-workflow-execution-log.dto.js.map +1 -0
  177. package/dist/dtos/update-workflow-execution.dto.d.ts +34 -0
  178. package/dist/dtos/update-workflow-execution.dto.d.ts.map +1 -0
  179. package/dist/dtos/update-workflow-execution.dto.js +190 -0
  180. package/dist/dtos/update-workflow-execution.dto.js.map +1 -0
  181. package/dist/dtos/update-workflow-secret.dto.d.ts +12 -0
  182. package/dist/dtos/update-workflow-secret.dto.d.ts.map +1 -0
  183. package/dist/dtos/update-workflow-secret.dto.js +80 -0
  184. package/dist/dtos/update-workflow-secret.dto.js.map +1 -0
  185. package/dist/dtos/update-workflow-step-execution.dto.d.ts +28 -0
  186. package/dist/dtos/update-workflow-step-execution.dto.d.ts.map +1 -0
  187. package/dist/dtos/update-workflow-step-execution.dto.js +175 -0
  188. package/dist/dtos/update-workflow-step-execution.dto.js.map +1 -0
  189. package/dist/dtos/update-workflow-trigger-execution.dto.d.ts +26 -0
  190. package/dist/dtos/update-workflow-trigger-execution.dto.d.ts.map +1 -0
  191. package/dist/dtos/update-workflow-trigger-execution.dto.js +163 -0
  192. package/dist/dtos/update-workflow-trigger-execution.dto.js.map +1 -0
  193. package/dist/dtos/validate-workflow-definition.dto.d.ts +4 -0
  194. package/dist/dtos/validate-workflow-definition.dto.d.ts.map +1 -0
  195. package/dist/dtos/validate-workflow-definition.dto.js +11 -0
  196. package/dist/dtos/validate-workflow-definition.dto.js.map +1 -0
  197. package/dist/entities/common.entity.d.ts +4 -0
  198. package/dist/entities/common.entity.d.ts.map +1 -1
  199. package/dist/entities/common.entity.js +25 -1
  200. package/dist/entities/common.entity.js.map +1 -1
  201. package/dist/entities/user.entity.d.ts.map +1 -1
  202. package/dist/entities/user.entity.js +36 -0
  203. package/dist/entities/user.entity.js.map +1 -1
  204. package/dist/entities/workflow-definition.entity.d.ts +15 -0
  205. package/dist/entities/workflow-definition.entity.d.ts.map +1 -0
  206. package/dist/entities/workflow-definition.entity.js +77 -0
  207. package/dist/entities/workflow-definition.entity.js.map +1 -0
  208. package/dist/entities/workflow-execution-artifact.entity.d.ts +23 -0
  209. package/dist/entities/workflow-execution-artifact.entity.d.ts.map +1 -0
  210. package/dist/entities/workflow-execution-artifact.entity.js +113 -0
  211. package/dist/entities/workflow-execution-artifact.entity.js.map +1 -0
  212. package/dist/entities/workflow-execution-log.entity.d.ts +19 -0
  213. package/dist/entities/workflow-execution-log.entity.d.ts.map +1 -0
  214. package/dist/entities/workflow-execution-log.entity.js +95 -0
  215. package/dist/entities/workflow-execution-log.entity.js.map +1 -0
  216. package/dist/entities/workflow-execution.entity.d.ts +28 -0
  217. package/dist/entities/workflow-execution.entity.d.ts.map +1 -0
  218. package/dist/entities/workflow-execution.entity.js +124 -0
  219. package/dist/entities/workflow-execution.entity.js.map +1 -0
  220. package/dist/entities/workflow-secret.entity.d.ts +12 -0
  221. package/dist/entities/workflow-secret.entity.d.ts.map +1 -0
  222. package/dist/entities/workflow-secret.entity.js +66 -0
  223. package/dist/entities/workflow-secret.entity.js.map +1 -0
  224. package/dist/entities/workflow-step-execution.entity.d.ts +28 -0
  225. package/dist/entities/workflow-step-execution.entity.d.ts.map +1 -0
  226. package/dist/entities/workflow-step-execution.entity.js +138 -0
  227. package/dist/entities/workflow-step-execution.entity.js.map +1 -0
  228. package/dist/entities/workflow-trigger-execution.entity.d.ts +26 -0
  229. package/dist/entities/workflow-trigger-execution.entity.d.ts.map +1 -0
  230. package/dist/entities/workflow-trigger-execution.entity.js +127 -0
  231. package/dist/entities/workflow-trigger-execution.entity.js.map +1 -0
  232. package/dist/factories/mail.factory.d.ts.map +1 -1
  233. package/dist/factories/mail.factory.js +4 -0
  234. package/dist/factories/mail.factory.js.map +1 -1
  235. package/dist/factories/sms.factory.d.ts.map +1 -1
  236. package/dist/factories/sms.factory.js +4 -1
  237. package/dist/factories/sms.factory.js.map +1 -1
  238. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -0
  239. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  240. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +18 -11
  241. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  242. package/dist/helpers/file-download.helper.d.ts +9 -0
  243. package/dist/helpers/file-download.helper.d.ts.map +1 -0
  244. package/dist/helpers/file-download.helper.js +14 -0
  245. package/dist/helpers/file-download.helper.js.map +1 -0
  246. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  247. package/dist/helpers/model-metadata-helper.service.js +30 -1
  248. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  249. package/dist/helpers/solid-registry.d.ts +5 -1
  250. package/dist/helpers/solid-registry.d.ts.map +1 -1
  251. package/dist/helpers/solid-registry.js +18 -1
  252. package/dist/helpers/solid-registry.js.map +1 -1
  253. package/dist/index.d.ts +59 -0
  254. package/dist/index.d.ts.map +1 -1
  255. package/dist/index.js +59 -0
  256. package/dist/index.js.map +1 -1
  257. package/dist/interfaces/workflow-node-handler.interface.d.ts +5 -0
  258. package/dist/interfaces/workflow-node-handler.interface.d.ts.map +1 -0
  259. package/dist/interfaces/workflow-node-handler.interface.js +3 -0
  260. package/dist/interfaces/workflow-node-handler.interface.js.map +1 -0
  261. package/dist/interfaces.d.ts +25 -0
  262. package/dist/interfaces.d.ts.map +1 -1
  263. package/dist/interfaces.js.map +1 -1
  264. package/dist/jobs/database/workflow-execution-publisher-database.service.d.ts +12 -0
  265. package/dist/jobs/database/workflow-execution-publisher-database.service.d.ts.map +1 -0
  266. package/dist/jobs/database/workflow-execution-publisher-database.service.js +39 -0
  267. package/dist/jobs/database/workflow-execution-publisher-database.service.js.map +1 -0
  268. package/dist/jobs/database/workflow-execution-queue-options-database.d.ts +8 -0
  269. package/dist/jobs/database/workflow-execution-queue-options-database.d.ts.map +1 -0
  270. package/dist/jobs/database/workflow-execution-queue-options-database.js +10 -0
  271. package/dist/jobs/database/workflow-execution-queue-options-database.js.map +1 -0
  272. package/dist/jobs/database/workflow-execution-subscriber-database.service.d.ts +19 -0
  273. package/dist/jobs/database/workflow-execution-subscriber-database.service.d.ts.map +1 -0
  274. package/dist/jobs/database/workflow-execution-subscriber-database.service.js +55 -0
  275. package/dist/jobs/database/workflow-execution-subscriber-database.service.js.map +1 -0
  276. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.d.ts +12 -0
  277. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.d.ts.map +1 -0
  278. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.js +39 -0
  279. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.js.map +1 -0
  280. package/dist/jobs/rabbitmq/workflow-execution-queue-options.d.ts +8 -0
  281. package/dist/jobs/rabbitmq/workflow-execution-queue-options.d.ts.map +1 -0
  282. package/dist/jobs/rabbitmq/workflow-execution-queue-options.js +10 -0
  283. package/dist/jobs/rabbitmq/workflow-execution-queue-options.js.map +1 -0
  284. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.d.ts +17 -0
  285. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.d.ts.map +1 -0
  286. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.js +52 -0
  287. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.js.map +1 -0
  288. package/dist/jobs/redis/workflow-execution-publisher-redis.service.d.ts +12 -0
  289. package/dist/jobs/redis/workflow-execution-publisher-redis.service.d.ts.map +1 -0
  290. package/dist/jobs/redis/workflow-execution-publisher-redis.service.js +39 -0
  291. package/dist/jobs/redis/workflow-execution-publisher-redis.service.js.map +1 -0
  292. package/dist/jobs/redis/workflow-execution-queue-options-redis.d.ts +8 -0
  293. package/dist/jobs/redis/workflow-execution-queue-options-redis.d.ts.map +1 -0
  294. package/dist/jobs/redis/workflow-execution-queue-options-redis.js +10 -0
  295. package/dist/jobs/redis/workflow-execution-queue-options-redis.js.map +1 -0
  296. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.d.ts +17 -0
  297. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.d.ts.map +1 -0
  298. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.js +52 -0
  299. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.js.map +1 -0
  300. package/dist/repository/security-rule.repository.d.ts +1 -0
  301. package/dist/repository/security-rule.repository.d.ts.map +1 -1
  302. package/dist/repository/security-rule.repository.js +28 -7
  303. package/dist/repository/security-rule.repository.js.map +1 -1
  304. package/dist/repository/workflow-definition.repository.d.ts +12 -0
  305. package/dist/repository/workflow-definition.repository.d.ts.map +1 -0
  306. package/dist/repository/workflow-definition.repository.js +39 -0
  307. package/dist/repository/workflow-definition.repository.js.map +1 -0
  308. package/dist/repository/workflow-execution-artifact.repository.d.ts +12 -0
  309. package/dist/repository/workflow-execution-artifact.repository.d.ts.map +1 -0
  310. package/dist/repository/workflow-execution-artifact.repository.js +39 -0
  311. package/dist/repository/workflow-execution-artifact.repository.js.map +1 -0
  312. package/dist/repository/workflow-execution-log.repository.d.ts +12 -0
  313. package/dist/repository/workflow-execution-log.repository.d.ts.map +1 -0
  314. package/dist/repository/workflow-execution-log.repository.js +39 -0
  315. package/dist/repository/workflow-execution-log.repository.js.map +1 -0
  316. package/dist/repository/workflow-execution.repository.d.ts +12 -0
  317. package/dist/repository/workflow-execution.repository.d.ts.map +1 -0
  318. package/dist/repository/workflow-execution.repository.js +39 -0
  319. package/dist/repository/workflow-execution.repository.js.map +1 -0
  320. package/dist/repository/workflow-secret.repository.d.ts +12 -0
  321. package/dist/repository/workflow-secret.repository.d.ts.map +1 -0
  322. package/dist/repository/workflow-secret.repository.js +39 -0
  323. package/dist/repository/workflow-secret.repository.js.map +1 -0
  324. package/dist/repository/workflow-step-execution.repository.d.ts +12 -0
  325. package/dist/repository/workflow-step-execution.repository.d.ts.map +1 -0
  326. package/dist/repository/workflow-step-execution.repository.js +39 -0
  327. package/dist/repository/workflow-step-execution.repository.js.map +1 -0
  328. package/dist/repository/workflow-trigger-execution.repository.d.ts +12 -0
  329. package/dist/repository/workflow-trigger-execution.repository.d.ts.map +1 -0
  330. package/dist/repository/workflow-trigger-execution.repository.js +39 -0
  331. package/dist/repository/workflow-trigger-execution.repository.js.map +1 -0
  332. package/dist/seeders/module-metadata-seeder.service.d.ts +6 -0
  333. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  334. package/dist/seeders/module-metadata-seeder.service.js +185 -27
  335. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  336. package/dist/seeders/module-test-data.service.d.ts +3 -1
  337. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  338. package/dist/seeders/module-test-data.service.js +8 -2
  339. package/dist/seeders/module-test-data.service.js.map +1 -1
  340. package/dist/seeders/seed-data/solid-core-metadata.json +11494 -5570
  341. package/dist/services/authentication.service.d.ts +4 -1
  342. package/dist/services/authentication.service.d.ts.map +1 -1
  343. package/dist/services/authentication.service.js +52 -4
  344. package/dist/services/authentication.service.js.map +1 -1
  345. package/dist/services/chatter-message.service.d.ts +11 -0
  346. package/dist/services/chatter-message.service.d.ts.map +1 -1
  347. package/dist/services/chatter-message.service.js +53 -4
  348. package/dist/services/chatter-message.service.js.map +1 -1
  349. package/dist/services/crud-helper.service.d.ts +21 -3
  350. package/dist/services/crud-helper.service.d.ts.map +1 -1
  351. package/dist/services/crud-helper.service.js +129 -54
  352. package/dist/services/crud-helper.service.js.map +1 -1
  353. package/dist/services/crud.service.d.ts +14 -1
  354. package/dist/services/crud.service.d.ts.map +1 -1
  355. package/dist/services/crud.service.js +107 -67
  356. package/dist/services/crud.service.js.map +1 -1
  357. package/dist/services/datasource-introspection.service.d.ts.map +1 -1
  358. package/dist/services/datasource-introspection.service.js.map +1 -1
  359. package/dist/services/draft-publish-helper.service.d.ts +52 -0
  360. package/dist/services/draft-publish-helper.service.d.ts.map +1 -0
  361. package/dist/services/draft-publish-helper.service.js +368 -0
  362. package/dist/services/draft-publish-helper.service.js.map +1 -0
  363. package/dist/services/internationalisation-helper.service.d.ts +19 -0
  364. package/dist/services/internationalisation-helper.service.d.ts.map +1 -0
  365. package/dist/services/internationalisation-helper.service.js +107 -0
  366. package/dist/services/internationalisation-helper.service.js.map +1 -0
  367. package/dist/services/locale.service.d.ts +1 -1
  368. package/dist/services/media.service.d.ts +3 -2
  369. package/dist/services/media.service.d.ts.map +1 -1
  370. package/dist/services/media.service.js +44 -29
  371. package/dist/services/media.service.js.map +1 -1
  372. package/dist/services/metadata-validation.service.d.ts +7 -0
  373. package/dist/services/metadata-validation.service.d.ts.map +1 -0
  374. package/dist/services/metadata-validation.service.js +42 -0
  375. package/dist/services/metadata-validation.service.js.map +1 -0
  376. package/dist/services/model-metadata.service.d.ts.map +1 -1
  377. package/dist/services/model-metadata.service.js +2 -1
  378. package/dist/services/model-metadata.service.js.map +1 -1
  379. package/dist/services/object.utils.d.ts +2 -0
  380. package/dist/services/object.utils.d.ts.map +1 -0
  381. package/dist/services/object.utils.js +11 -0
  382. package/dist/services/object.utils.js.map +1 -0
  383. package/dist/services/settings/default-settings-provider.service.d.ts +46 -6
  384. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  385. package/dist/services/settings/default-settings-provider.service.js +29 -3
  386. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  387. package/dist/services/solid-introspect.service.d.ts +1 -0
  388. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  389. package/dist/services/solid-introspect.service.js +12 -0
  390. package/dist/services/solid-introspect.service.js.map +1 -1
  391. package/dist/services/user.service.d.ts +2 -2
  392. package/dist/services/user.service.d.ts.map +1 -1
  393. package/dist/services/user.service.js +9 -3
  394. package/dist/services/user.service.js.map +1 -1
  395. package/dist/services/view-metadata.service.d.ts +6 -3
  396. package/dist/services/view-metadata.service.d.ts.map +1 -1
  397. package/dist/services/view-metadata.service.js +60 -63
  398. package/dist/services/view-metadata.service.js.map +1 -1
  399. package/dist/services/workflow/nodes/execution-fail.node.d.ts +6 -0
  400. package/dist/services/workflow/nodes/execution-fail.node.d.ts.map +1 -0
  401. package/dist/services/workflow/nodes/execution-fail.node.js +81 -0
  402. package/dist/services/workflow/nodes/execution-fail.node.js.map +1 -0
  403. package/dist/services/workflow/nodes/for-each.node.d.ts +8 -0
  404. package/dist/services/workflow/nodes/for-each.node.d.ts.map +1 -0
  405. package/dist/services/workflow/nodes/for-each.node.js +204 -0
  406. package/dist/services/workflow/nodes/for-each.node.js.map +1 -0
  407. package/dist/services/workflow/nodes/http-request.node.d.ts +13 -0
  408. package/dist/services/workflow/nodes/http-request.node.d.ts.map +1 -0
  409. package/dist/services/workflow/nodes/http-request.node.js +549 -0
  410. package/dist/services/workflow/nodes/http-request.node.js.map +1 -0
  411. package/dist/services/workflow/nodes/if.node.d.ts +6 -0
  412. package/dist/services/workflow/nodes/if.node.d.ts.map +1 -0
  413. package/dist/services/workflow/nodes/if.node.js +100 -0
  414. package/dist/services/workflow/nodes/if.node.js.map +1 -0
  415. package/dist/services/workflow/nodes/log-write.node.d.ts +6 -0
  416. package/dist/services/workflow/nodes/log-write.node.d.ts.map +1 -0
  417. package/dist/services/workflow/nodes/log-write.node.js +231 -0
  418. package/dist/services/workflow/nodes/log-write.node.js.map +1 -0
  419. package/dist/services/workflow/nodes/loop-until.node.d.ts +12 -0
  420. package/dist/services/workflow/nodes/loop-until.node.d.ts.map +1 -0
  421. package/dist/services/workflow/nodes/loop-until.node.js +281 -0
  422. package/dist/services/workflow/nodes/loop-until.node.js.map +1 -0
  423. package/dist/services/workflow/nodes/parallel.node.d.ts +6 -0
  424. package/dist/services/workflow/nodes/parallel.node.d.ts.map +1 -0
  425. package/dist/services/workflow/nodes/parallel.node.js +83 -0
  426. package/dist/services/workflow/nodes/parallel.node.js.map +1 -0
  427. package/dist/services/workflow/nodes/runtime-python.node.d.ts +13 -0
  428. package/dist/services/workflow/nodes/runtime-python.node.d.ts.map +1 -0
  429. package/dist/services/workflow/nodes/runtime-python.node.js +522 -0
  430. package/dist/services/workflow/nodes/runtime-python.node.js.map +1 -0
  431. package/dist/services/workflow/nodes/sequential.node.d.ts +6 -0
  432. package/dist/services/workflow/nodes/sequential.node.d.ts.map +1 -0
  433. package/dist/services/workflow/nodes/sequential.node.js +68 -0
  434. package/dist/services/workflow/nodes/sequential.node.js.map +1 -0
  435. package/dist/services/workflow/nodes/solidx-api.helpers.d.ts +25 -0
  436. package/dist/services/workflow/nodes/solidx-api.helpers.d.ts.map +1 -0
  437. package/dist/services/workflow/nodes/solidx-api.helpers.js +143 -0
  438. package/dist/services/workflow/nodes/solidx-api.helpers.js.map +1 -0
  439. package/dist/services/workflow/nodes/solidx-crud.nodes.d.ts +48 -0
  440. package/dist/services/workflow/nodes/solidx-crud.nodes.d.ts.map +1 -0
  441. package/dist/services/workflow/nodes/solidx-crud.nodes.js +475 -0
  442. package/dist/services/workflow/nodes/solidx-crud.nodes.js.map +1 -0
  443. package/dist/services/workflow/nodes/solidx-login.node.d.ts +6 -0
  444. package/dist/services/workflow/nodes/solidx-login.node.d.ts.map +1 -0
  445. package/dist/services/workflow/nodes/solidx-login.node.js +208 -0
  446. package/dist/services/workflow/nodes/solidx-login.node.js.map +1 -0
  447. package/dist/services/workflow/nodes/solidx-send-email.node.d.ts +11 -0
  448. package/dist/services/workflow/nodes/solidx-send-email.node.d.ts.map +1 -0
  449. package/dist/services/workflow/nodes/solidx-send-email.node.js +437 -0
  450. package/dist/services/workflow/nodes/solidx-send-email.node.js.map +1 -0
  451. package/dist/services/workflow/nodes/solidx-send-sms.node.d.ts +10 -0
  452. package/dist/services/workflow/nodes/solidx-send-sms.node.d.ts.map +1 -0
  453. package/dist/services/workflow/nodes/solidx-send-sms.node.js +347 -0
  454. package/dist/services/workflow/nodes/solidx-send-sms.node.js.map +1 -0
  455. package/dist/services/workflow/nodes/switch.node.d.ts +7 -0
  456. package/dist/services/workflow/nodes/switch.node.d.ts.map +1 -0
  457. package/dist/services/workflow/nodes/switch.node.js +120 -0
  458. package/dist/services/workflow/nodes/switch.node.js.map +1 -0
  459. package/dist/services/workflow/workflow-definition-metadata-sync.service.d.ts +19 -0
  460. package/dist/services/workflow/workflow-definition-metadata-sync.service.d.ts.map +1 -0
  461. package/dist/services/workflow/workflow-definition-metadata-sync.service.js +187 -0
  462. package/dist/services/workflow/workflow-definition-metadata-sync.service.js.map +1 -0
  463. package/dist/services/workflow/workflow-definition-validator.service.d.ts +13 -0
  464. package/dist/services/workflow/workflow-definition-validator.service.d.ts.map +1 -0
  465. package/dist/services/workflow/workflow-definition-validator.service.js +166 -0
  466. package/dist/services/workflow/workflow-definition-validator.service.js.map +1 -0
  467. package/dist/services/workflow/workflow-execution-writer.service.d.ts +26 -0
  468. package/dist/services/workflow/workflow-execution-writer.service.d.ts.map +1 -0
  469. package/dist/services/workflow/workflow-execution-writer.service.js +191 -0
  470. package/dist/services/workflow/workflow-execution-writer.service.js.map +1 -0
  471. package/dist/services/workflow/workflow-expression.service.d.ts +14 -0
  472. package/dist/services/workflow/workflow-expression.service.d.ts.map +1 -0
  473. package/dist/services/workflow/workflow-expression.service.js +157 -0
  474. package/dist/services/workflow/workflow-expression.service.js.map +1 -0
  475. package/dist/services/workflow/workflow-invocation.service.d.ts +11 -0
  476. package/dist/services/workflow/workflow-invocation.service.d.ts.map +1 -0
  477. package/dist/services/workflow/workflow-invocation.service.js +37 -0
  478. package/dist/services/workflow/workflow-invocation.service.js.map +1 -0
  479. package/dist/services/workflow/workflow-node-registry.service.d.ts +19 -0
  480. package/dist/services/workflow/workflow-node-registry.service.d.ts.map +1 -0
  481. package/dist/services/workflow/workflow-node-registry.service.js +117 -0
  482. package/dist/services/workflow/workflow-node-registry.service.js.map +1 -0
  483. package/dist/services/workflow/workflow-runtime.service.d.ts +61 -0
  484. package/dist/services/workflow/workflow-runtime.service.d.ts.map +1 -0
  485. package/dist/services/workflow/workflow-runtime.service.js +706 -0
  486. package/dist/services/workflow/workflow-runtime.service.js.map +1 -0
  487. package/dist/services/workflow/workflow-scheduled-trigger.job.d.ts +10 -0
  488. package/dist/services/workflow/workflow-scheduled-trigger.job.d.ts.map +1 -0
  489. package/dist/services/workflow/workflow-scheduled-trigger.job.js +37 -0
  490. package/dist/services/workflow/workflow-scheduled-trigger.job.js.map +1 -0
  491. package/dist/services/workflow-definition.service.d.ts +52 -0
  492. package/dist/services/workflow-definition.service.d.ts.map +1 -0
  493. package/dist/services/workflow-definition.service.js +251 -0
  494. package/dist/services/workflow-definition.service.js.map +1 -0
  495. package/dist/services/workflow-execution-artifact.service.d.ts +12 -0
  496. package/dist/services/workflow-execution-artifact.service.d.ts.map +1 -0
  497. package/dist/services/workflow-execution-artifact.service.js +38 -0
  498. package/dist/services/workflow-execution-artifact.service.js.map +1 -0
  499. package/dist/services/workflow-execution-log.service.d.ts +12 -0
  500. package/dist/services/workflow-execution-log.service.d.ts.map +1 -0
  501. package/dist/services/workflow-execution-log.service.js +38 -0
  502. package/dist/services/workflow-execution-log.service.js.map +1 -0
  503. package/dist/services/workflow-execution.service.d.ts +12 -0
  504. package/dist/services/workflow-execution.service.d.ts.map +1 -0
  505. package/dist/services/workflow-execution.service.js +38 -0
  506. package/dist/services/workflow-execution.service.js.map +1 -0
  507. package/dist/services/workflow-secret.service.d.ts +25 -0
  508. package/dist/services/workflow-secret.service.d.ts.map +1 -0
  509. package/dist/services/workflow-secret.service.js +152 -0
  510. package/dist/services/workflow-secret.service.js.map +1 -0
  511. package/dist/services/workflow-step-execution.service.d.ts +12 -0
  512. package/dist/services/workflow-step-execution.service.d.ts.map +1 -0
  513. package/dist/services/workflow-step-execution.service.js +38 -0
  514. package/dist/services/workflow-step-execution.service.js.map +1 -0
  515. package/dist/services/workflow-trigger-execution.service.d.ts +12 -0
  516. package/dist/services/workflow-trigger-execution.service.d.ts.map +1 -0
  517. package/dist/services/workflow-trigger-execution.service.js +38 -0
  518. package/dist/services/workflow-trigger-execution.service.js.map +1 -0
  519. package/dist/solid-core.module.d.ts.map +1 -1
  520. package/dist/solid-core.module.js +131 -1
  521. package/dist/solid-core.module.js.map +1 -1
  522. package/dist/testing/adapters/ui/playwright-adapter.d.ts +5 -0
  523. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
  524. package/dist/testing/adapters/ui/playwright-adapter.js +17 -1
  525. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
  526. package/dist/testing/adapters/ui/ui.types.d.ts +2 -0
  527. package/dist/testing/adapters/ui/ui.types.d.ts.map +1 -1
  528. package/dist/testing/adapters/ui/ui.types.js.map +1 -1
  529. package/dist/testing/steps/ui/actions.step.d.ts.map +1 -1
  530. package/dist/testing/steps/ui/actions.step.js +6 -2
  531. package/dist/testing/steps/ui/actions.step.js.map +1 -1
  532. package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
  533. package/dist/testing/steps/ui/assertions.step.js +11 -3
  534. package/dist/testing/steps/ui/assertions.step.js.map +1 -1
  535. package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
  536. package/dist/testing/steps/ui/form.step.js +9 -3
  537. package/dist/testing/steps/ui/form.step.js.map +1 -1
  538. package/dist/testing/steps/ui/manual.step.js +1 -1
  539. package/dist/testing/steps/ui/manual.step.js.map +1 -1
  540. package/dist/testing/steps/ui/navigation.step.d.ts.map +1 -1
  541. package/dist/testing/steps/ui/navigation.step.js +3 -1
  542. package/dist/testing/steps/ui/navigation.step.js.map +1 -1
  543. package/dist/transformers/empty-string-to-null-transformer.d.ts +4 -0
  544. package/dist/transformers/empty-string-to-null-transformer.d.ts.map +1 -0
  545. package/dist/transformers/empty-string-to-null-transformer.js +12 -0
  546. package/dist/transformers/empty-string-to-null-transformer.js.map +1 -0
  547. package/dist/types/workflow-dsl.types.d.ts +291 -0
  548. package/dist/types/workflow-dsl.types.d.ts.map +1 -0
  549. package/dist/types/workflow-dsl.types.js +3 -0
  550. package/dist/types/workflow-dsl.types.js.map +1 -0
  551. package/dist/types/workflow-execution-queue.types.d.ts +4 -0
  552. package/dist/types/workflow-execution-queue.types.d.ts.map +1 -0
  553. package/dist/types/workflow-execution-queue.types.js +3 -0
  554. package/dist/types/workflow-execution-queue.types.js.map +1 -0
  555. package/package.json +3 -2
  556. package/src/commands/run-tests.command.ts +47 -1
  557. package/src/commands/seed.command.ts +19 -0
  558. package/src/constants/chatter-message.constants.ts +12 -0
  559. package/src/constants/draft-publish-fields.ts +5 -0
  560. package/src/constants/media-file-types.ts +50 -0
  561. package/src/constants/user.constants.ts +13 -0
  562. package/src/controllers/chatter-message.controller.ts +8 -0
  563. package/src/controllers/export-template.controller.ts +5 -3
  564. package/src/controllers/import-transaction.controller.ts +6 -6
  565. package/src/controllers/media.controller.ts +17 -6
  566. package/src/controllers/module-package.controller.ts +2 -3
  567. package/src/controllers/workflow-definition.controller.ts +141 -0
  568. package/src/controllers/workflow-execution-artifact.controller.ts +93 -0
  569. package/src/controllers/workflow-execution-log.controller.ts +93 -0
  570. package/src/controllers/workflow-execution.controller.ts +126 -0
  571. package/src/controllers/workflow-secret.controller.ts +90 -0
  572. package/src/controllers/workflow-step-execution.controller.ts +93 -0
  573. package/src/controllers/workflow-trigger-execution.controller.ts +93 -0
  574. package/src/decorators/workflow-field-data-provider.decorator.ts +7 -0
  575. package/src/decorators/workflow-node-provider.decorator.ts +14 -0
  576. package/src/dtos/basic-filters.dto.ts +0 -4
  577. package/src/dtos/create-workflow-definition.dto.ts +60 -0
  578. package/src/dtos/create-workflow-execution-artifact.dto.ts +99 -0
  579. package/src/dtos/create-workflow-execution-log.dto.ts +80 -0
  580. package/src/dtos/create-workflow-execution.dto.ts +137 -0
  581. package/src/dtos/create-workflow-secret.dto.ts +44 -0
  582. package/src/dtos/create-workflow-step-execution.dto.ts +123 -0
  583. package/src/dtos/create-workflow-trigger-execution.dto.ts +114 -0
  584. package/src/dtos/execute-workflow.dto.ts +6 -0
  585. package/src/dtos/update-workflow-definition.dto.ts +67 -0
  586. package/src/dtos/update-workflow-execution-artifact.dto.ts +105 -0
  587. package/src/dtos/update-workflow-execution-log.dto.ts +87 -0
  588. package/src/dtos/update-workflow-execution.dto.ts +144 -0
  589. package/src/dtos/update-workflow-secret.dto.ts +53 -0
  590. package/src/dtos/update-workflow-step-execution.dto.ts +132 -0
  591. package/src/dtos/update-workflow-trigger-execution.dto.ts +122 -0
  592. package/src/dtos/validate-workflow-definition.dto.ts +3 -0
  593. package/src/entities/common.entity.ts +24 -0
  594. package/src/entities/user.entity.ts +53 -36
  595. package/src/entities/workflow-definition.entity.ts +43 -0
  596. package/src/entities/workflow-execution-artifact.entity.ts +72 -0
  597. package/src/entities/workflow-execution-log.entity.ts +58 -0
  598. package/src/entities/workflow-execution.entity.ts +82 -0
  599. package/src/entities/workflow-secret.entity.ts +33 -0
  600. package/src/entities/workflow-step-execution.entity.ts +88 -0
  601. package/src/entities/workflow-trigger-execution.entity.ts +82 -0
  602. package/src/factories/mail.factory.ts +7 -1
  603. package/src/factories/sms.factory.ts +4 -1
  604. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +26 -12
  605. package/src/helpers/file-download.helper.ts +31 -0
  606. package/src/helpers/model-metadata-helper.service.ts +32 -1
  607. package/src/helpers/solid-registry.ts +22 -2
  608. package/src/index.ts +59 -0
  609. package/src/interfaces/workflow-node-handler.interface.ts +10 -0
  610. package/src/interfaces.ts +30 -0
  611. package/src/jobs/database/workflow-execution-publisher-database.service.ts +24 -0
  612. package/src/jobs/database/workflow-execution-queue-options-database.ts +9 -0
  613. package/src/jobs/database/workflow-execution-subscriber-database.service.ts +44 -0
  614. package/src/jobs/rabbitmq/workflow-execution-publisher.service.ts +24 -0
  615. package/src/jobs/rabbitmq/workflow-execution-queue-options.ts +9 -0
  616. package/src/jobs/rabbitmq/workflow-execution-subscriber.service.ts +42 -0
  617. package/src/jobs/redis/workflow-execution-publisher-redis.service.ts +24 -0
  618. package/src/jobs/redis/workflow-execution-queue-options-redis.ts +9 -0
  619. package/src/jobs/redis/workflow-execution-subscriber-redis.service.ts +42 -0
  620. package/src/repository/security-rule.repository.ts +52 -10
  621. package/src/repository/workflow-definition.repository.ts +19 -0
  622. package/src/repository/workflow-execution-artifact.repository.ts +19 -0
  623. package/src/repository/workflow-execution-log.repository.ts +19 -0
  624. package/src/repository/workflow-execution.repository.ts +19 -0
  625. package/src/repository/workflow-secret.repository.ts +19 -0
  626. package/src/repository/workflow-step-execution.repository.ts +19 -0
  627. package/src/repository/workflow-trigger-execution.repository.ts +19 -0
  628. package/src/seeders/module-metadata-seeder.service.ts +216 -40
  629. package/src/seeders/module-test-data.service.ts +6 -0
  630. package/src/seeders/seed-data/solid-core-metadata.json +11494 -5570
  631. package/src/services/authentication.service.ts +76 -5
  632. package/src/services/chatter-message.service.ts +107 -5
  633. package/src/services/crud-helper.service.ts +236 -56
  634. package/src/services/crud.service.ts +159 -104
  635. package/src/services/datasource-introspection.service.ts +5 -0
  636. package/src/services/draft-publish-helper.service.ts +529 -0
  637. package/src/services/internationalisation-helper.service.ts +148 -0
  638. package/src/services/media.service.ts +67 -36
  639. package/src/services/metadata-validation.service.ts +39 -0
  640. package/src/services/model-metadata.service.ts +4 -1
  641. package/src/services/object.utils.ts +10 -0
  642. package/src/services/settings/default-settings-provider.service.ts +35 -3
  643. package/src/services/solid-introspect.service.ts +19 -0
  644. package/src/services/user.service.ts +18 -3
  645. package/src/services/view-metadata.service.ts +80 -154
  646. package/src/services/workflow/nodes/execution-fail.node.ts +82 -0
  647. package/src/services/workflow/nodes/for-each.node.ts +231 -0
  648. package/src/services/workflow/nodes/http-request.node.ts +624 -0
  649. package/src/services/workflow/nodes/if.node.ts +100 -0
  650. package/src/services/workflow/nodes/log-write.node.ts +234 -0
  651. package/src/services/workflow/nodes/loop-until.node.ts +343 -0
  652. package/src/services/workflow/nodes/parallel.node.ts +88 -0
  653. package/src/services/workflow/nodes/runtime-python.node.ts +571 -0
  654. package/src/services/workflow/nodes/sequential.node.ts +65 -0
  655. package/src/services/workflow/nodes/solidx-api.helpers.ts +205 -0
  656. package/src/services/workflow/nodes/solidx-crud.nodes.ts +511 -0
  657. package/src/services/workflow/nodes/solidx-login.node.ts +222 -0
  658. package/src/services/workflow/nodes/solidx-send-email.node.ts +489 -0
  659. package/src/services/workflow/nodes/solidx-send-sms.node.ts +377 -0
  660. package/src/services/workflow/nodes/switch.node.ts +132 -0
  661. package/src/services/workflow/workflow-definition-metadata-sync.service.ts +196 -0
  662. package/src/services/workflow/workflow-definition-validator.service.ts +226 -0
  663. package/src/services/workflow/workflow-execution-writer.service.ts +244 -0
  664. package/src/services/workflow/workflow-expression.service.ts +180 -0
  665. package/src/services/workflow/workflow-invocation.service.ts +39 -0
  666. package/src/services/workflow/workflow-node-registry.service.ts +152 -0
  667. package/src/services/workflow/workflow-runtime.service.ts +934 -0
  668. package/src/services/workflow/workflow-scheduled-trigger.job.ts +33 -0
  669. package/src/services/workflow-definition.service.ts +293 -0
  670. package/src/services/workflow-execution-artifact.service.ts +20 -0
  671. package/src/services/workflow-execution-log.service.ts +20 -0
  672. package/src/services/workflow-execution.service.ts +20 -0
  673. package/src/services/workflow-secret.service.ts +161 -0
  674. package/src/services/workflow-step-execution.service.ts +20 -0
  675. package/src/services/workflow-trigger-execution.service.ts +20 -0
  676. package/src/solid-core.module.ts +144 -3
  677. package/src/testing/README.md +73 -2
  678. package/src/testing/adapters/ui/playwright-adapter.ts +25 -0
  679. package/src/testing/adapters/ui/ui.types.ts +2 -0
  680. package/src/testing/steps/ui/actions.step.ts +8 -4
  681. package/src/testing/steps/ui/assertions.step.ts +18 -5
  682. package/src/testing/steps/ui/form.step.ts +16 -6
  683. package/src/testing/steps/ui/manual.step.ts +1 -1
  684. package/src/testing/steps/ui/navigation.step.ts +4 -2
  685. package/src/transformers/empty-string-to-null-transformer.ts +11 -0
  686. package/src/types/workflow-dsl.types.ts +1030 -0
  687. package/src/types/workflow-execution-queue.types.ts +3 -0
@@ -38,6 +38,8 @@ import { MqDashboardQueueNameVariableOptionsProvider } from "./services/selectio
38
38
  import { PseudoForeignKeySelectionProvider } from "./services/selection-providers/pseudo-foreign-key-selection-provider.service";
39
39
  import { ModuleMetadataSeederService } from "./seeders/module-metadata-seeder.service";
40
40
  import { ModuleTestDataService } from "./seeders/module-test-data.service";
41
+ import { DraftPublishHelperService } from "./services/draft-publish-helper.service";
42
+ import { InternationalisationHelperService } from "./services/internationalisation-helper.service";
41
43
  import { CrudHelperService } from "./services/crud-helper.service";
42
44
  import { DatasourceManagementService } from "./services/datasource-management.service";
43
45
  import { DatasourceIntrospectionService } from "./services/datasource-introspection.service";
@@ -56,10 +58,10 @@ import { ModulePackageService } from "./services/module-package.service";
56
58
  import { SolidIntrospectService } from "./services/solid-introspect.service";
57
59
  // import { ListOfComputedFieldProvider } from './providers/list-of-computed-field-provider.service';
58
60
  import { ServeStaticModule } from "@nestjs/serve-static";
59
- import { extname, join } from "path";
61
+ import { basename, join } from "path";
60
62
  import { RefreshModelCommand } from "./commands/refresh-model.command";
61
63
  import { MediaController } from "./controllers/media.controller";
62
- import { INLINE_SAFE_EXTENSIONS } from "./constants/media-file-types";
64
+ import { getLowercaseFileExtension, INLINE_SAFE_EXTENSIONS } from "./constants/media-file-types";
63
65
 
64
66
  import { RefreshModuleCommand } from "./commands/refresh-module.command";
65
67
  import { ModelMetadataSubscriber } from "./subscribers/model-metadata.subscriber";
@@ -148,6 +150,8 @@ import { ComputedFieldEvaluationPublisherRedis } from "./jobs/redis/computed-fie
148
150
  import { ComputedFieldEvaluationSubscriberRedis } from "./jobs/redis/computed-field-evaluation-subscriber-redis.service";
149
151
  import { GenerateCodePublisherRedis } from "./jobs/redis/generate-code-publisher-redis.service";
150
152
  import { GenerateCodeSubscriberRedis } from "./jobs/redis/generate-code-subscriber-redis.service";
153
+ import { WorkflowExecutionPublisherRedis } from "./jobs/redis/workflow-execution-publisher-redis.service";
154
+ import { WorkflowExecutionSubscriberRedis } from "./jobs/redis/workflow-execution-subscriber-redis.service";
151
155
  import { Msg91OTPQueuePublisherRedis } from "./jobs/redis/msg91-otp-publisher-redis.service";
152
156
  import { Msg91OTPQueueSubscriberRedis } from "./jobs/redis/msg91-otp-subscriber-redis.service";
153
157
  import { Msg91SmsQueuePublisherRedis } from "./jobs/redis/msg91-sms-publisher-redis.service";
@@ -165,6 +169,7 @@ import { GoogleOauthStrategy } from "./passport-strategies/google-oauth.strategy
165
169
  import { ApiKeyService } from "./services/api-key.service";
166
170
  import { ActiveSessionStorageService } from "./services/active-session-storage.service";
167
171
  import { AuthenticationService } from "./services/authentication.service";
172
+ import { MetadataValidationService } from "./services/metadata-validation.service";
168
173
  import { BcryptService } from "./services/bcrypt.service";
169
174
  import { UuidExternalIdEntityComputedFieldProvider } from "./services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service";
170
175
  import { UuidExternalIdComputedFieldProvider } from "./services/computed-fields/uuid-external-id-computed-field-provider.service";
@@ -252,6 +257,8 @@ import { ComputedFieldEvaluationPublisherDatabase } from './jobs/database/comput
252
257
  import { ComputedFieldEvaluationSubscriberDatabase } from './jobs/database/computed-field-evaluation-subscriber-database.service';
253
258
  import { GenerateCodePublisherDatabase } from './jobs/database/generate-code-publisher-database.service';
254
259
  import { GenerateCodeSubscriberDatabase } from './jobs/database/generate-code-subscriber-database.service';
260
+ import { WorkflowExecutionPublisherDatabase } from './jobs/database/workflow-execution-publisher-database.service';
261
+ import { WorkflowExecutionSubscriberDatabase } from './jobs/database/workflow-execution-subscriber-database.service';
255
262
  import { OTPQueuePublisherDatabase } from './jobs/database/otp-publisher-database.service';
256
263
  import { OTPQueueSubscriberDatabase } from './jobs/database/otp-subscriber-database.service';
257
264
  import { Msg91SmsQueuePublisherDatabase } from './jobs/database/msg91-sms-publisher-database.service';
@@ -274,6 +281,8 @@ import { Three60WhatsappQueuePublisherDatabase } from "./jobs/database/three60-w
274
281
  import { Three60WhatsappQueueSubscriberDatabase } from "./jobs/database/three60-whatsapp-subscriber-database.service";
275
282
  import { GenerateCodePublisherRabbitmq } from "./jobs/rabbitmq/generate-code-publisher.service";
276
283
  import { GenerateCodeSubscriberRabbitmq } from "./jobs/rabbitmq/generate-code-subscriber.service";
284
+ import { WorkflowExecutionPublisherRabbitmq } from "./jobs/rabbitmq/workflow-execution-publisher.service";
285
+ import { WorkflowExecutionSubscriberRabbitmq } from "./jobs/rabbitmq/workflow-execution-subscriber.service";
277
286
  import { Three60WhatsappQueuePublisher } from "./jobs/rabbitmq/three60-whatsapp-publisher.service";
278
287
  import { Three60WhatsappQueueSubscriber } from "./jobs/rabbitmq/three60-whatsapp-subscriber.service";
279
288
  import { TwilioSmsQueuePublisherRabbitmq } from "./jobs/rabbitmq/twilio-sms-publisher.service";
@@ -399,6 +408,63 @@ import { DashboardUserLayoutRepository } from './repositories/dashboard-user-lay
399
408
  import { MssqlDatasourceIntrospectionProviderService } from "./services/datasource-introspection/mssql-datasource-introspection-provider.service";
400
409
  import { MysqlDatasourceIntrospectionProviderService } from "./services/datasource-introspection/mysql-datasource-introspection-provider.service";
401
410
  import { PostgresDatasourceIntrospectionProviderService } from "./services/datasource-introspection/postgres-datasource-introspection-provider.service";
411
+ import { WorkflowDefinition } from './entities/workflow-definition.entity';
412
+ import { WorkflowExecution } from './entities/workflow-execution.entity';
413
+ import { WorkflowStepExecution } from './entities/workflow-step-execution.entity';
414
+ import { WorkflowExecutionLog } from './entities/workflow-execution-log.entity';
415
+ import { WorkflowExecutionArtifact } from './entities/workflow-execution-artifact.entity';
416
+ import { WorkflowTriggerExecution } from './entities/workflow-trigger-execution.entity';
417
+ import { WorkflowSecret } from './entities/workflow-secret.entity';
418
+ import { WorkflowDefinitionController } from './controllers/workflow-definition.controller';
419
+ import { WorkflowExecutionController } from './controllers/workflow-execution.controller';
420
+ import { WorkflowStepExecutionController } from './controllers/workflow-step-execution.controller';
421
+ import { WorkflowExecutionLogController } from './controllers/workflow-execution-log.controller';
422
+ import { WorkflowExecutionArtifactController } from './controllers/workflow-execution-artifact.controller';
423
+ import { WorkflowTriggerExecutionController } from './controllers/workflow-trigger-execution.controller';
424
+ import { WorkflowSecretController } from './controllers/workflow-secret.controller';
425
+ import { WorkflowDefinitionService } from './services/workflow-definition.service';
426
+ import { WorkflowDefinitionMetadataSyncService } from './services/workflow/workflow-definition-metadata-sync.service';
427
+ import { WorkflowExecutionService } from './services/workflow-execution.service';
428
+ import { WorkflowStepExecutionService } from './services/workflow-step-execution.service';
429
+ import { WorkflowExecutionLogService } from './services/workflow-execution-log.service';
430
+ import { WorkflowExecutionArtifactService } from './services/workflow-execution-artifact.service';
431
+ import { WorkflowTriggerExecutionService } from './services/workflow-trigger-execution.service';
432
+ import { WorkflowSecretService } from './services/workflow-secret.service';
433
+ import { WorkflowDefinitionRepository } from './repository/workflow-definition.repository';
434
+ import { WorkflowExecutionRepository } from './repository/workflow-execution.repository';
435
+ import { WorkflowStepExecutionRepository } from './repository/workflow-step-execution.repository';
436
+ import { WorkflowExecutionLogRepository } from './repository/workflow-execution-log.repository';
437
+ import { WorkflowExecutionArtifactRepository } from './repository/workflow-execution-artifact.repository';
438
+ import { WorkflowTriggerExecutionRepository } from './repository/workflow-trigger-execution.repository';
439
+ import { WorkflowSecretRepository } from './repository/workflow-secret.repository';
440
+ import { WorkflowDefinitionValidatorService } from './services/workflow/workflow-definition-validator.service';
441
+ import { WorkflowExecutionWriterService } from './services/workflow/workflow-execution-writer.service';
442
+ import { WorkflowExpressionService } from './services/workflow/workflow-expression.service';
443
+ import { WorkflowInvocationService } from './services/workflow/workflow-invocation.service';
444
+ import { WorkflowNodeRegistryService } from './services/workflow/workflow-node-registry.service';
445
+ import { WorkflowRuntimeService } from './services/workflow/workflow-runtime.service';
446
+ import { WorkflowScheduledTriggerJobService } from './services/workflow/workflow-scheduled-trigger.job';
447
+ import { ExecutionFailNode } from './services/workflow/nodes/execution-fail.node';
448
+ import { ForEachNode } from './services/workflow/nodes/for-each.node';
449
+ import { HttpRequestNode } from './services/workflow/nodes/http-request.node';
450
+ import { IfNode } from './services/workflow/nodes/if.node';
451
+ import { LogWriteNode } from './services/workflow/nodes/log-write.node';
452
+ import { LoopUntilNode } from './services/workflow/nodes/loop-until.node';
453
+ import { ParallelNode } from './services/workflow/nodes/parallel.node';
454
+ import { RuntimePythonNode } from './services/workflow/nodes/runtime-python.node';
455
+ import { SequentialNode } from './services/workflow/nodes/sequential.node';
456
+ import {
457
+ SolidXCreateNode,
458
+ SolidXDeleteNode,
459
+ SolidXGetNode,
460
+ SolidXListNode,
461
+ SolidXPatchNode,
462
+ SolidXUpdateNode,
463
+ } from './services/workflow/nodes/solidx-crud.nodes';
464
+ import { SolidXLoginNode } from './services/workflow/nodes/solidx-login.node';
465
+ import { SolidXSendEmailNode } from './services/workflow/nodes/solidx-send-email.node';
466
+ import { SolidXSendSmsNode } from './services/workflow/nodes/solidx-send-sms.node';
467
+ import { SwitchNode } from './services/workflow/nodes/switch.node';
402
468
 
403
469
  @Global()
404
470
  @Module({
@@ -439,6 +505,13 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
439
505
  UserViewMetadata,
440
506
  ViewMetadata,
441
507
  ModelSequence,
508
+ WorkflowDefinition,
509
+ WorkflowExecution,
510
+ WorkflowStepExecution,
511
+ WorkflowExecutionLog,
512
+ WorkflowExecutionArtifact,
513
+ WorkflowTriggerExecution,
514
+ WorkflowSecret,
442
515
  ]),
443
516
 
444
517
  CacheModule.registerAsync(CacheManagerOptions),
@@ -465,7 +538,11 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
465
538
  // else (including svg, html, and any other uploaded file) is forced to download
466
539
  // rather than be displayed/executed by the browser, regardless of what mimetype or
467
540
  // extension it was uploaded with.
468
- if (!INLINE_SAFE_EXTENSIONS.has(extname(path).toLowerCase().replace(/^\./, ''))) {
541
+ // basename first: getLowercaseFileExtension takes a file name, not a path, so a
542
+ // directory containing a dot must not be mistaken for the extension. An
543
+ // extensionless file yields undefined, which is not inline-safe - so it correctly
544
+ // falls through to the forced-download branch.
545
+ if (!INLINE_SAFE_EXTENSIONS.has(getLowercaseFileExtension(basename(path)) ?? '')) {
469
546
  res.setHeader("Content-Type", "application/octet-stream");
470
547
  res.setHeader("Content-Disposition", "attachment");
471
548
  }
@@ -539,6 +616,13 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
539
616
  ViewMetadataController,
540
617
  ModelSequenceController,
541
618
  DashboardUserLayoutController,
619
+ WorkflowDefinitionController,
620
+ WorkflowExecutionController,
621
+ WorkflowStepExecutionController,
622
+ WorkflowExecutionLogController,
623
+ WorkflowExecutionArtifactController,
624
+ WorkflowTriggerExecutionController,
625
+ WorkflowSecretController,
542
626
  ],
543
627
  providers: [
544
628
  {
@@ -567,6 +651,7 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
567
651
  ModuleMetadataExplorerService,
568
652
  ModuleMetadataHelperService,
569
653
  ModulePackageService,
654
+ MetadataValidationService,
570
655
  ModelMetadataService,
571
656
  ModelMetadataHelperService,
572
657
  FieldMetadataService,
@@ -579,6 +664,8 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
579
664
  InfoService,
580
665
  SolidIntrospectService,
581
666
  DiscoveryService,
667
+ DraftPublishHelperService,
668
+ InternationalisationHelperService,
582
669
  CrudHelperService,
583
670
  CRUDService,
584
671
  Reflector,
@@ -711,6 +798,8 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
711
798
  ComputedFieldEvaluationSubscriberRedis,
712
799
  GenerateCodePublisherRedis,
713
800
  GenerateCodeSubscriberRedis,
801
+ WorkflowExecutionPublisherRedis,
802
+ WorkflowExecutionSubscriberRedis,
714
803
  Msg91OTPQueuePublisherRedis,
715
804
  Msg91OTPQueueSubscriberRedis,
716
805
  Msg91SmsQueuePublisherRedis,
@@ -727,6 +816,10 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
727
816
  GenerateCodeSubscriberDatabase,
728
817
  GenerateCodePublisherRabbitmq,
729
818
  GenerateCodeSubscriberRabbitmq,
819
+ WorkflowExecutionPublisherDatabase,
820
+ WorkflowExecutionSubscriberDatabase,
821
+ WorkflowExecutionPublisherRabbitmq,
822
+ WorkflowExecutionSubscriberRabbitmq,
730
823
  Msg91OTPQueuePublisher,
731
824
  MqMessageQueueService,
732
825
  MqMessageService,
@@ -844,6 +937,47 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
844
937
  ListOfRolesSelectionProvider,
845
938
  DashboardUserLayoutService,
846
939
  DashboardUserLayoutRepository,
940
+ WorkflowDefinitionService,
941
+ WorkflowDefinitionMetadataSyncService,
942
+ WorkflowDefinitionRepository,
943
+ WorkflowExecutionService,
944
+ WorkflowExecutionRepository,
945
+ WorkflowStepExecutionService,
946
+ WorkflowStepExecutionRepository,
947
+ WorkflowExecutionLogService,
948
+ WorkflowExecutionLogRepository,
949
+ WorkflowExecutionArtifactService,
950
+ WorkflowExecutionArtifactRepository,
951
+ WorkflowTriggerExecutionService,
952
+ WorkflowTriggerExecutionRepository,
953
+ WorkflowSecretService,
954
+ WorkflowSecretRepository,
955
+ WorkflowInvocationService,
956
+ WorkflowRuntimeService,
957
+ WorkflowExecutionWriterService,
958
+ WorkflowExpressionService,
959
+ WorkflowDefinitionValidatorService,
960
+ WorkflowNodeRegistryService,
961
+ WorkflowScheduledTriggerJobService,
962
+ ExecutionFailNode,
963
+ LogWriteNode,
964
+ HttpRequestNode,
965
+ IfNode,
966
+ ForEachNode,
967
+ LoopUntilNode,
968
+ ParallelNode,
969
+ RuntimePythonNode,
970
+ SequentialNode,
971
+ SwitchNode,
972
+ SolidXLoginNode,
973
+ SolidXListNode,
974
+ SolidXGetNode,
975
+ SolidXCreateNode,
976
+ SolidXUpdateNode,
977
+ SolidXPatchNode,
978
+ SolidXDeleteNode,
979
+ SolidXSendEmailNode,
980
+ SolidXSendSmsNode,
847
981
  ],
848
982
  exports: [
849
983
  AuthenticationService,
@@ -852,6 +986,8 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
852
986
  ChatterMessageRepository,
853
987
  ChatterMessageService,
854
988
  ConfigModule,
989
+ DraftPublishHelperService,
990
+ InternationalisationHelperService,
855
991
  CrudHelperService,
856
992
  CRUDService,
857
993
  CsvService,
@@ -874,6 +1010,7 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
874
1010
  SmsFactory,
875
1011
  MediaService,
876
1012
  MediaStorageProviderMetadataService,
1013
+ MetadataValidationService,
877
1014
  ModelMetadataHelperService,
878
1015
  ModelMetadataService,
879
1016
  ModuleMetadataService,
@@ -907,6 +1044,10 @@ import { PostgresDatasourceIntrospectionProviderService } from "./services/datas
907
1044
  SolidMicroserviceAdapter,
908
1045
  UserService,
909
1046
  SettingService,
1047
+ WorkflowInvocationService,
1048
+ WorkflowRuntimeService,
1049
+ WorkflowNodeRegistryService,
1050
+ WorkflowExpressionService,
910
1051
  ],
911
1052
  })
912
1053
  export class SolidCoreModule implements NestModule {
@@ -75,6 +75,57 @@ General step fields:
75
75
  - `timeoutMs` (optional): per-step timeout override
76
76
  - `spec` (optional): used by `test.spec` to identify the spec
77
77
 
78
+ ## Timeouts
79
+ There are two independent timeout layers. They are easy to confuse, so note which one you want:
80
+
81
+ **1. Engine timeouts** — `scenario.timeoutMs` and the top-level `step.timeoutMs`.
82
+ These wrap execution in a `Promise.race` (`core/timeout.ts`). They are a hard upper bound
83
+ on wall-clock time and do **not** cancel the underlying browser call, so the failure message
84
+ only tells you the scenario or op that overran.
85
+
86
+ **2. UI (Playwright) timeouts** — the run-wide default plus per-step `with.timeoutMs`.
87
+ This is what governs how long `ui.expectVisible`, `ui.click`, `ui.fill` etc. wait for a
88
+ selector. Playwright cancels the operation itself, so the error names the selector and the
89
+ state it was waiting for. **If your UI steps are timing out, this is the knob to turn.**
90
+
91
+ Resolution order for UI steps: `with.timeoutMs` → `--ui-timeout-ms` → `UI_TIMEOUT_MS` →
92
+ `uiTestDefaultTimeoutMs` setting → `30000`.
93
+ `ui.goto` uses the navigation timeout instead: `with.timeoutMs` → `--ui-navigation-timeout-ms`
94
+ → `UI_NAVIGATION_TIMEOUT_MS` → `uiTestNavigationTimeoutMs` setting → the resolved UI timeout.
95
+
96
+ Raise the default for a whole run:
97
+ ```bash
98
+ solid test run --module <module-name> --ui-timeout-ms 60000
99
+ # or
100
+ UI_TIMEOUT_MS=60000 solid test run --module <module-name>
101
+ ```
102
+
103
+ Or set the installation-wide default under **Settings → Testing Settings** in the admin UI
104
+ (`uiTestDefaultTimeoutMs` / `uiTestNavigationTimeoutMs`). Those rows are created by `solid seed`;
105
+ until then the built-in `30000` applies. Flags and env vars still win, so CI keeps per-run control.
106
+
107
+ The seeded value of those two settings can be provisioned from the environment with
108
+ `COMMON_UI_TEST_DEFAULT_TIMEOUT_MS` and `COMMON_UI_TEST_NAVIGATION_TIMEOUT_MS` (the latter falls
109
+ back to the former). Seeding is insert-only, so these apply on first seed only — afterwards the
110
+ stored value wins and the setting must be changed in the admin UI. Values that are missing,
111
+ non-numeric, or not positive fall back to `30000`.
112
+
113
+ Note these are distinct from the run-time `UI_TIMEOUT_MS` / `UI_NAVIGATION_TIMEOUT_MS` vars,
114
+ which override the setting on a per-run basis and are read every run.
115
+
116
+ Or bump only the one slow step, leaving the rest of the suite strict:
117
+ ```json
118
+ {
119
+ "then": {
120
+ "op": "ui.expectVisible",
121
+ "with": { "selector": "#report-grid", "timeoutMs": 90000 }
122
+ }
123
+ }
124
+ ```
125
+
126
+ Caution: a scenario-level `timeoutMs` lower than the UI timeout will fire first and mask the
127
+ more useful Playwright error. Keep `defaults.timeoutMs` above your UI timeout.
128
+
78
129
  ## Interpolation
79
130
  Available tokens:
80
131
  - `${env:NAME}` (environment variables)
@@ -198,6 +249,7 @@ Description: Navigates the browser to a URL.
198
249
 
199
250
  Options in `with`:
200
251
  - `url` (required)
252
+ - `timeoutMs` (optional, overrides the run-wide UI navigation timeout)
201
253
 
202
254
  ### **Op: `ui.expectUrl`**
203
255
  Description: Asserts the current page URL.
@@ -212,6 +264,7 @@ Description: Fills an input or editable element.
212
264
  Options in `with`:
213
265
  - `selector` (required)
214
266
  - `value` (required)
267
+ - `timeoutMs` (optional, overrides the run-wide UI timeout)
215
268
 
216
269
  ### **Op: `ui.select`**
217
270
  Description: Selects an option in a select element.
@@ -219,12 +272,14 @@ Description: Selects an option in a select element.
219
272
  Options in `with`:
220
273
  - `selector` (required)
221
274
  - `value` (required)
275
+ - `timeoutMs` (optional, overrides the run-wide UI timeout)
222
276
 
223
277
  ### **Op: `ui.click`**
224
278
  Description: Clicks an element located by selector.
225
279
 
226
280
  Options in `with`:
227
281
  - `selector` (required)
282
+ - `timeoutMs` (optional, overrides the run-wide UI timeout)
228
283
 
229
284
  ### **Op: `ui.press`**
230
285
  Description: Presses a keyboard key on a focused element.
@@ -232,6 +287,7 @@ Description: Presses a keyboard key on a focused element.
232
287
  Options in `with`:
233
288
  - `selector` (required)
234
289
  - `key` (required)
290
+ - `timeoutMs` (optional, overrides the run-wide UI timeout)
235
291
 
236
292
  ### **Op: `ui.waitForManual`**
237
293
  Description: Pauses a headed Playwright run so a human can interact with the live browser, then resumes when Enter is pressed in the terminal.
@@ -242,7 +298,7 @@ Options in `with`:
242
298
  - `waitForSelector` (optional, waits for a visible selector after resume)
243
299
  - `waitForUrlEquals` (optional, waits until the current URL exactly matches)
244
300
  - `waitForUrlContains` (optional, waits until the current URL contains a substring)
245
- - `timeoutMs` (optional, timeout for post-resume waits)
301
+ - `timeoutMs` (optional, timeout for post-resume waits; defaults to the run-wide UI timeout)
246
302
  - `bringToFront` (optional, defaults to `true`)
247
303
 
248
304
  Notes:
@@ -269,6 +325,7 @@ Description: Waits for an element to be visible.
269
325
 
270
326
  Options in `with`:
271
327
  - `selector` (required)
328
+ - `timeoutMs` (optional, overrides the run-wide UI timeout)
272
329
 
273
330
  ### **Op: `ui.expectText`**
274
331
  Description: Asserts the text content of an element.
@@ -277,6 +334,7 @@ Options in `with`:
277
334
  - `selector` (required)
278
335
  - `equals` (optional)
279
336
  - `contains` (optional)
337
+ - `timeoutMs` (optional, overrides the run-wide UI timeout)
280
338
 
281
339
  ### **Op: `assert.equals`**
282
340
  Description: Asserts strict equality between two values.
@@ -388,7 +446,12 @@ await runFromMetadata({
388
446
  includeTags: ["smoke"],
389
447
  defaults: { timeoutMs: 30_000, retries: 1 },
390
448
  api: { baseUrl: "https://api.example.com" },
391
- ui: { baseUrl: "https://app.example.com", headless: true }
449
+ ui: {
450
+ baseUrl: "https://app.example.com",
451
+ headless: true,
452
+ defaultTimeoutMs: 30_000,
453
+ navigationTimeoutMs: 45_000
454
+ }
392
455
  });
393
456
  ```
394
457
 
@@ -409,6 +472,14 @@ Lightweight existing-database workflow:
409
472
 
410
473
  For human-assisted OTP or third-party verification flows, use `ui.waitForManual` in a headed run so the browser remains interactive while the scenario is paused.
411
474
 
475
+ Common `test run` flags (all pass through solidctl unchanged):
476
+ - `--ui-base-url <url>` / `--api-base-url <url>`
477
+ - `--headless [true|false]`
478
+ - `--ui-timeout-ms <number>` — default wait for every UI step (see [Timeouts](#timeouts))
479
+ - `--ui-navigation-timeout-ms <number>` — default wait for `ui.goto`
480
+ - `--timeout-ms <number>` / `--retries <number>` — scenario-level guard and retry count
481
+ - `--scenario-ids <ids>` / `--include-tags <tags>` / `--skip-scenario-ids <ids>`
482
+
412
483
  ## Add A New Step (SOP)
413
484
  1. Create a new `*.step.ts` in the right domain folder.
414
485
  2. Implement a `registerXSteps(registry)` function and `registry.register("op.name", handler)`.
@@ -6,9 +6,13 @@ function isAbsoluteUrl(url: string): boolean {
6
6
  return /^https?:\/\//i.test(url);
7
7
  }
8
8
 
9
+ export const DEFAULT_UI_TIMEOUT_MS = 30_000;
10
+
9
11
  export class PlaywrightAdapter {
10
12
  private readonly baseUrl?: string;
11
13
  private readonly headless: boolean;
14
+ private readonly defaultTimeoutMs: number;
15
+ private readonly navigationTimeoutMs: number;
12
16
  private browser?: Browser;
13
17
  private context?: BrowserContext;
14
18
  public page?: Page;
@@ -16,16 +20,37 @@ export class PlaywrightAdapter {
16
20
  constructor(opts?: PlaywrightAdapterOptions) {
17
21
  this.baseUrl = opts?.baseUrl;
18
22
  this.headless = opts?.headless ?? true;
23
+ this.defaultTimeoutMs = opts?.defaultTimeoutMs ?? DEFAULT_UI_TIMEOUT_MS;
24
+ this.navigationTimeoutMs =
25
+ opts?.navigationTimeoutMs ?? this.defaultTimeoutMs;
19
26
  }
20
27
 
21
28
  isHeadless(): boolean {
22
29
  return this.headless;
23
30
  }
24
31
 
32
+ /**
33
+ * Resolves the timeout for a single Playwright call: an explicit per-step
34
+ * value wins, otherwise the run-wide default applies.
35
+ */
36
+ resolveTimeout(stepTimeoutMs?: number): number {
37
+ return typeof stepTimeoutMs === 'number' && Number.isFinite(stepTimeoutMs)
38
+ ? stepTimeoutMs
39
+ : this.defaultTimeoutMs;
40
+ }
41
+
42
+ resolveNavigationTimeout(stepTimeoutMs?: number): number {
43
+ return typeof stepTimeoutMs === 'number' && Number.isFinite(stepTimeoutMs)
44
+ ? stepTimeoutMs
45
+ : this.navigationTimeoutMs;
46
+ }
47
+
25
48
  async start(): Promise<void> {
26
49
  const { chromium } = await import('playwright');
27
50
  this.browser = await chromium.launch({ headless: this.headless });
28
51
  this.context = await this.browser.newContext();
52
+ this.context.setDefaultTimeout(this.defaultTimeoutMs);
53
+ this.context.setDefaultNavigationTimeout(this.navigationTimeoutMs);
29
54
  this.page = await this.context.newPage();
30
55
  }
31
56
 
@@ -1,4 +1,6 @@
1
1
  export interface PlaywrightAdapterOptions {
2
2
  headless?: boolean;
3
3
  baseUrl?: string;
4
+ defaultTimeoutMs?: number;
5
+ navigationTimeoutMs?: number;
4
6
  }
@@ -2,8 +2,8 @@ import type { TestContext } from "../../contracts/runtime-context.types";
2
2
  import type { OpStep } from "../../contracts/testing-metadata.types";
3
3
  import { StepRegistry } from "../../core/step-registry";
4
4
 
5
- type ClickInput = { selector: string };
6
- type PressInput = { selector: string; key: string };
5
+ type ClickInput = { selector: string; timeoutMs?: number };
6
+ type PressInput = { selector: string; key: string; timeoutMs?: number };
7
7
 
8
8
  function requirePage(ctx: TestContext, op: string) {
9
9
  if (!ctx.ui || !ctx.ui.page) {
@@ -19,7 +19,9 @@ export function registerActionSteps(registry: StepRegistry): void {
19
19
  if (!input.selector) {
20
20
  throw new Error('Missing "selector" in step.with for op "ui.click"');
21
21
  }
22
- await page.click(input.selector);
22
+ await page.click(input.selector, {
23
+ timeout: ctx.ui?.resolveTimeout(input.timeoutMs),
24
+ });
23
25
  });
24
26
 
25
27
  registry.register("ui.press", async (ctx: TestContext, step: OpStep) => {
@@ -31,6 +33,8 @@ export function registerActionSteps(registry: StepRegistry): void {
31
33
  if (!input.key) {
32
34
  throw new Error('Missing "key" in step.with for op "ui.press"');
33
35
  }
34
- await page.press(input.selector, input.key);
36
+ await page.press(input.selector, input.key, {
37
+ timeout: ctx.ui?.resolveTimeout(input.timeoutMs),
38
+ });
35
39
  });
36
40
  }
@@ -2,8 +2,13 @@ import type { TestContext } from "../../contracts/runtime-context.types";
2
2
  import type { OpStep } from "../../contracts/testing-metadata.types";
3
3
  import { StepRegistry } from "../../core/step-registry";
4
4
 
5
- type VisibleInput = { selector: string };
6
- type ExpectTextInput = { selector: string; equals?: string; contains?: string };
5
+ type VisibleInput = { selector: string; timeoutMs?: number };
6
+ type ExpectTextInput = {
7
+ selector: string;
8
+ equals?: string;
9
+ contains?: string;
10
+ timeoutMs?: number;
11
+ };
7
12
 
8
13
  function requirePage(ctx: TestContext, op: string) {
9
14
  if (!ctx.ui || !ctx.ui.page) {
@@ -19,7 +24,10 @@ export function registerAssertionSteps(registry: StepRegistry): void {
19
24
  if (!input.selector) {
20
25
  throw new Error('Missing "selector" in step.with for op "ui.expectVisible"');
21
26
  }
22
- await page.waitForSelector(input.selector, { state: "visible" });
27
+ await page.waitForSelector(input.selector, {
28
+ state: "visible",
29
+ timeout: ctx.ui?.resolveTimeout(input.timeoutMs),
30
+ });
23
31
  });
24
32
 
25
33
  registry.register("ui.expectHidden", async (ctx: TestContext, step: OpStep) => {
@@ -28,7 +36,10 @@ export function registerAssertionSteps(registry: StepRegistry): void {
28
36
  if (!input.selector) {
29
37
  throw new Error('Missing "selector" in step.with for op "ui.expectHidden"');
30
38
  }
31
- await page.waitForSelector(input.selector, { state: "hidden" });
39
+ await page.waitForSelector(input.selector, {
40
+ state: "hidden",
41
+ timeout: ctx.ui?.resolveTimeout(input.timeoutMs),
42
+ });
32
43
  });
33
44
 
34
45
  registry.register("ui.expectText", async (ctx: TestContext, step: OpStep) => {
@@ -38,7 +49,9 @@ export function registerAssertionSteps(registry: StepRegistry): void {
38
49
  throw new Error('Missing "selector" in step.with for op "ui.expectText"');
39
50
  }
40
51
 
41
- const text = await page.locator(input.selector).innerText();
52
+ const text = await page
53
+ .locator(input.selector)
54
+ .innerText({ timeout: ctx.ui?.resolveTimeout(input.timeoutMs) });
42
55
  if (input.equals !== undefined) {
43
56
  if (text !== input.equals) {
44
57
  throw new Error(
@@ -4,9 +4,13 @@ import type { TestContext } from "../../contracts/runtime-context.types";
4
4
  import type { OpStep } from "../../contracts/testing-metadata.types";
5
5
  import { StepRegistry } from "../../core/step-registry";
6
6
 
7
- type FillInput = { selector: string; value: string };
8
- type SelectInput = { selector: string; value: string };
9
- type UploadFileInput = { selector: string; filePath: string | string[] };
7
+ type FillInput = { selector: string; value: string; timeoutMs?: number };
8
+ type SelectInput = { selector: string; value: string; timeoutMs?: number };
9
+ type UploadFileInput = {
10
+ selector: string;
11
+ filePath: string | string[];
12
+ timeoutMs?: number;
13
+ };
10
14
 
11
15
  function requirePage(ctx: TestContext, op: string) {
12
16
  if (!ctx.ui || !ctx.ui.page) {
@@ -25,7 +29,9 @@ export function registerFormSteps(registry: StepRegistry): void {
25
29
  if (input.value === undefined) {
26
30
  throw new Error('Missing "value" in step.with for op "ui.fill"');
27
31
  }
28
- await page.fill(input.selector, String(input.value));
32
+ await page.fill(input.selector, String(input.value), {
33
+ timeout: ctx.ui?.resolveTimeout(input.timeoutMs),
34
+ });
29
35
  });
30
36
 
31
37
  registry.register("ui.select", async (ctx: TestContext, step: OpStep) => {
@@ -37,7 +43,9 @@ export function registerFormSteps(registry: StepRegistry): void {
37
43
  if (input.value === undefined) {
38
44
  throw new Error('Missing "value" in step.with for op "ui.select"');
39
45
  }
40
- await page.selectOption(input.selector, String(input.value));
46
+ await page.selectOption(input.selector, String(input.value), {
47
+ timeout: ctx.ui?.resolveTimeout(input.timeoutMs),
48
+ });
41
49
  });
42
50
 
43
51
  registry.register("ui.uploadFile", async (ctx: TestContext, step: OpStep) => {
@@ -53,6 +61,8 @@ export function registerFormSteps(registry: StepRegistry): void {
53
61
  const resolved = Array.isArray(input.filePath)
54
62
  ? input.filePath.map((p) => path.resolve(cwd, String(p)))
55
63
  : path.resolve(cwd, String(input.filePath));
56
- await page.setInputFiles(input.selector, resolved);
64
+ await page.setInputFiles(input.selector, resolved, {
65
+ timeout: ctx.ui?.resolveTimeout(input.timeoutMs),
66
+ });
57
67
  });
58
68
  }
@@ -28,7 +28,7 @@ export function registerManualSteps(registry: StepRegistry): void {
28
28
  const inputConfig = (step.with ?? {}) as WaitForManualInput;
29
29
  const message = inputConfig.message?.trim() || "Manual interaction required.";
30
30
  const prompt = inputConfig.prompt?.trim() || "Press Enter to continue...";
31
- const timeoutMs = inputConfig.timeoutMs;
31
+ const timeoutMs = ctx.ui?.resolveTimeout(inputConfig.timeoutMs);
32
32
  const bringToFront = inputConfig.bringToFront ?? true;
33
33
 
34
34
  if (ctx.ui?.isHeadless()) {
@@ -2,7 +2,7 @@ import type { TestContext } from "../../contracts/runtime-context.types";
2
2
  import type { OpStep } from "../../contracts/testing-metadata.types";
3
3
  import { StepRegistry } from "../../core/step-registry";
4
4
 
5
- type GotoInput = { url: string };
5
+ type GotoInput = { url: string; timeoutMs?: number };
6
6
  type ExpectUrlInput = { equals?: string; contains?: string };
7
7
 
8
8
  function requirePage(ctx: TestContext, op: string) {
@@ -20,7 +20,9 @@ export function registerNavigationSteps(registry: StepRegistry): void {
20
20
  throw new Error('Missing "url" in step.with for op "ui.goto"');
21
21
  }
22
22
  const url = ctx.ui?.resolveUrl(input.url) ?? input.url;
23
- await page.goto(url);
23
+ await page.goto(url, {
24
+ timeout: ctx.ui?.resolveNavigationTimeout(input.timeoutMs),
25
+ });
24
26
  });
25
27
 
26
28
  registry.register("ui.expectUrl", async (ctx: TestContext, step: OpStep) => {
@@ -0,0 +1,11 @@
1
+ import { TransformFnParams } from "class-transformer";
2
+
3
+ export const emptyStringToNullTransformer = ({ value }: TransformFnParams) => {
4
+ if (typeof value === "string" && value.trim() === "") {
5
+ return null;
6
+ }
7
+
8
+ return value;
9
+ };
10
+
11
+ export default emptyStringToNullTransformer;