@ductape/sdk 0.1.7 → 0.1.8

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 (973) hide show
  1. package/package.json +4 -2
  2. package/dist/agents/agent-context.d.ts +0 -100
  3. package/dist/agents/agent-context.js +0 -604
  4. package/dist/agents/agent-context.js.map +0 -1
  5. package/dist/agents/agent-executor.d.ts +0 -180
  6. package/dist/agents/agent-executor.js +0 -715
  7. package/dist/agents/agent-executor.js.map +0 -1
  8. package/dist/agents/agents.service.d.ts +0 -310
  9. package/dist/agents/agents.service.js +0 -1255
  10. package/dist/agents/agents.service.js.map +0 -1
  11. package/dist/agents/index.d.ts +0 -55
  12. package/dist/agents/index.js +0 -110
  13. package/dist/agents/index.js.map +0 -1
  14. package/dist/agents/memory-manager.d.ts +0 -182
  15. package/dist/agents/memory-manager.js +0 -383
  16. package/dist/agents/memory-manager.js.map +0 -1
  17. package/dist/agents/tool-registry.d.ts +0 -141
  18. package/dist/agents/tool-registry.js +0 -355
  19. package/dist/agents/tool-registry.js.map +0 -1
  20. package/dist/agents/types/agents.types.d.ts +0 -1240
  21. package/dist/agents/types/agents.types.js +0 -12
  22. package/dist/agents/types/agents.types.js.map +0 -1
  23. package/dist/agents/types/index.d.ts +0 -6
  24. package/dist/agents/types/index.js +0 -23
  25. package/dist/agents/types/index.js.map +0 -1
  26. package/dist/agents/vector-store-adapter.d.ts +0 -108
  27. package/dist/agents/vector-store-adapter.js +0 -213
  28. package/dist/agents/vector-store-adapter.js.map +0 -1
  29. package/dist/api/services/appApi.service.d.ts +0 -78
  30. package/dist/api/services/appApi.service.js +0 -303
  31. package/dist/api/services/appApi.service.js.map +0 -1
  32. package/dist/api/services/logsApi.service.d.ts +0 -62
  33. package/dist/api/services/logsApi.service.js +0 -67
  34. package/dist/api/services/logsApi.service.js.map +0 -1
  35. package/dist/api/services/pricingApi.service.d.ts +0 -10
  36. package/dist/api/services/pricingApi.service.js +0 -34
  37. package/dist/api/services/pricingApi.service.js.map +0 -1
  38. package/dist/api/services/processorApi.service.d.ts +0 -927
  39. package/dist/api/services/processorApi.service.js +0 -787
  40. package/dist/api/services/processorApi.service.js.map +0 -1
  41. package/dist/api/services/productsApi.service.d.ts +0 -150
  42. package/dist/api/services/productsApi.service.js +0 -279
  43. package/dist/api/services/productsApi.service.js.map +0 -1
  44. package/dist/api/services/resilienceApi.service.d.ts +0 -106
  45. package/dist/api/services/resilienceApi.service.js +0 -224
  46. package/dist/api/services/resilienceApi.service.js.map +0 -1
  47. package/dist/api/services/secretsApi.service.d.ts +0 -51
  48. package/dist/api/services/secretsApi.service.js +0 -126
  49. package/dist/api/services/secretsApi.service.js.map +0 -1
  50. package/dist/api/services/userApi.service.d.ts +0 -10
  51. package/dist/api/services/userApi.service.js +0 -20
  52. package/dist/api/services/userApi.service.js.map +0 -1
  53. package/dist/api/services/webhooksApi.service.d.ts +0 -14
  54. package/dist/api/services/webhooksApi.service.js +0 -65
  55. package/dist/api/services/webhooksApi.service.js.map +0 -1
  56. package/dist/api/services/workflowApi.service.d.ts +0 -199
  57. package/dist/api/services/workflowApi.service.js +0 -201
  58. package/dist/api/services/workflowApi.service.js.map +0 -1
  59. package/dist/api/services/workspaceApi.service.d.ts +0 -20
  60. package/dist/api/services/workspaceApi.service.js +0 -54
  61. package/dist/api/services/workspaceApi.service.js.map +0 -1
  62. package/dist/api/urls.d.ts +0 -136
  63. package/dist/api/urls.js +0 -185
  64. package/dist/api/urls.js.map +0 -1
  65. package/dist/api/utils/auth.utils.d.ts +0 -10
  66. package/dist/api/utils/auth.utils.js +0 -24
  67. package/dist/api/utils/auth.utils.js.map +0 -1
  68. package/dist/api/utils/cache.utils.d.ts +0 -3
  69. package/dist/api/utils/cache.utils.js +0 -18
  70. package/dist/api/utils/cache.utils.js.map +0 -1
  71. package/dist/api/utils/strings.utils.d.ts +0 -7
  72. package/dist/api/utils/strings.utils.js +0 -64
  73. package/dist/api/utils/strings.utils.js.map +0 -1
  74. package/dist/apps/services/app.service.d.ts +0 -126
  75. package/dist/apps/services/app.service.js +0 -1436
  76. package/dist/apps/services/app.service.js.map +0 -1
  77. package/dist/apps/utils/auth-context-manager.d.ts +0 -137
  78. package/dist/apps/utils/auth-context-manager.js +0 -248
  79. package/dist/apps/utils/auth-context-manager.js.map +0 -1
  80. package/dist/apps/utils/credential-manager.d.ts +0 -128
  81. package/dist/apps/utils/credential-manager.js +0 -199
  82. package/dist/apps/utils/credential-manager.js.map +0 -1
  83. package/dist/apps/utils/index.d.ts +0 -10
  84. package/dist/apps/utils/index.js +0 -54
  85. package/dist/apps/utils/index.js.map +0 -1
  86. package/dist/apps/utils/input-helpers.d.ts +0 -67
  87. package/dist/apps/utils/input-helpers.js +0 -185
  88. package/dist/apps/utils/input-helpers.js.map +0 -1
  89. package/dist/apps/utils/input-resolver.d.ts +0 -165
  90. package/dist/apps/utils/input-resolver.js +0 -477
  91. package/dist/apps/utils/input-resolver.js.map +0 -1
  92. package/dist/apps/utils/oauth-manager.d.ts +0 -196
  93. package/dist/apps/utils/oauth-manager.js +0 -429
  94. package/dist/apps/utils/oauth-manager.js.map +0 -1
  95. package/dist/apps/utils/objects.utils.d.ts +0 -4
  96. package/dist/apps/utils/objects.utils.js +0 -59
  97. package/dist/apps/utils/objects.utils.js.map +0 -1
  98. package/dist/apps/utils/string.utils.d.ts +0 -9
  99. package/dist/apps/utils/string.utils.js +0 -89
  100. package/dist/apps/utils/string.utils.js.map +0 -1
  101. package/dist/apps/validators/index.d.ts +0 -17
  102. package/dist/apps/validators/index.js +0 -39
  103. package/dist/apps/validators/index.js.map +0 -1
  104. package/dist/apps/validators/joi-validators/create.app.validator.d.ts +0 -3
  105. package/dist/apps/validators/joi-validators/create.app.validator.js +0 -43
  106. package/dist/apps/validators/joi-validators/create.app.validator.js.map +0 -1
  107. package/dist/apps/validators/joi-validators/create.appAction.validator.d.ts +0 -3
  108. package/dist/apps/validators/joi-validators/create.appAction.validator.js +0 -72
  109. package/dist/apps/validators/joi-validators/create.appAction.validator.js.map +0 -1
  110. package/dist/apps/validators/joi-validators/create.appActionResponse.validator.d.ts +0 -7
  111. package/dist/apps/validators/joi-validators/create.appActionResponse.validator.js +0 -81
  112. package/dist/apps/validators/joi-validators/create.appActionResponse.validator.js.map +0 -1
  113. package/dist/apps/validators/joi-validators/create.appAuth.validator.d.ts +0 -3
  114. package/dist/apps/validators/joi-validators/create.appAuth.validator.js +0 -64
  115. package/dist/apps/validators/joi-validators/create.appAuth.validator.js.map +0 -1
  116. package/dist/apps/validators/joi-validators/create.appBody.validators.d.ts +0 -4
  117. package/dist/apps/validators/joi-validators/create.appBody.validators.js +0 -44
  118. package/dist/apps/validators/joi-validators/create.appBody.validators.js.map +0 -1
  119. package/dist/apps/validators/joi-validators/create.appConstants.validator.d.ts +0 -4
  120. package/dist/apps/validators/joi-validators/create.appConstants.validator.js +0 -45
  121. package/dist/apps/validators/joi-validators/create.appConstants.validator.js.map +0 -1
  122. package/dist/apps/validators/joi-validators/create.appEnv.validator.d.ts +0 -4
  123. package/dist/apps/validators/joi-validators/create.appEnv.validator.js +0 -50
  124. package/dist/apps/validators/joi-validators/create.appEnv.validator.js.map +0 -1
  125. package/dist/apps/validators/joi-validators/create.appVariable.validator.d.ts +0 -4
  126. package/dist/apps/validators/joi-validators/create.appVariable.validator.js +0 -47
  127. package/dist/apps/validators/joi-validators/create.appVariable.validator.js.map +0 -1
  128. package/dist/apps/validators/joi-validators/create.appWebhook.validator.d.ts +0 -4
  129. package/dist/apps/validators/joi-validators/create.appWebhook.validator.js +0 -60
  130. package/dist/apps/validators/joi-validators/create.appWebhook.validator.js.map +0 -1
  131. package/dist/apps/validators/joi-validators/create.appWebhookEvent.validator.d.ts +0 -3
  132. package/dist/apps/validators/joi-validators/create.appWebhookEvent.validator.js +0 -48
  133. package/dist/apps/validators/joi-validators/create.appWebhookEvent.validator.js.map +0 -1
  134. package/dist/apps/validators/joi-validators/sample.validator.d.ts +0 -6
  135. package/dist/apps/validators/joi-validators/sample.validator.js +0 -65
  136. package/dist/apps/validators/joi-validators/sample.validator.js.map +0 -1
  137. package/dist/apps/validators/joi-validators/update.app.validator.d.ts +0 -4
  138. package/dist/apps/validators/joi-validators/update.app.validator.js +0 -66
  139. package/dist/apps/validators/joi-validators/update.app.validator.js.map +0 -1
  140. package/dist/apps/validators/joi-validators/update.appAction.validator.d.ts +0 -4
  141. package/dist/apps/validators/joi-validators/update.appAction.validator.js +0 -76
  142. package/dist/apps/validators/joi-validators/update.appAction.validator.js.map +0 -1
  143. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.d.ts +0 -3
  144. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js +0 -57
  145. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js.map +0 -1
  146. package/dist/apps/validators/joi-validators/update.appAuth.validator.d.ts +0 -4
  147. package/dist/apps/validators/joi-validators/update.appAuth.validator.js +0 -52
  148. package/dist/apps/validators/joi-validators/update.appAuth.validator.js.map +0 -1
  149. package/dist/apps/validators/joi-validators/update.appConstants.validator.d.ts +0 -4
  150. package/dist/apps/validators/joi-validators/update.appConstants.validator.js +0 -45
  151. package/dist/apps/validators/joi-validators/update.appConstants.validator.js.map +0 -1
  152. package/dist/apps/validators/joi-validators/update.appEnv.validator.d.ts +0 -4
  153. package/dist/apps/validators/joi-validators/update.appEnv.validator.js +0 -50
  154. package/dist/apps/validators/joi-validators/update.appEnv.validator.js.map +0 -1
  155. package/dist/apps/validators/joi-validators/update.appVariables.validator.d.ts +0 -4
  156. package/dist/apps/validators/joi-validators/update.appVariables.validator.js +0 -47
  157. package/dist/apps/validators/joi-validators/update.appVariables.validator.js.map +0 -1
  158. package/dist/apps/validators/joi-validators/update.appWebhook.validator.d.ts +0 -4
  159. package/dist/apps/validators/joi-validators/update.appWebhook.validator.js +0 -59
  160. package/dist/apps/validators/joi-validators/update.appWebhook.validator.js.map +0 -1
  161. package/dist/apps/validators/joi-validators/update.appWebhookEvent.validator.d.ts +0 -3
  162. package/dist/apps/validators/joi-validators/update.appWebhookEvent.validator.js +0 -48
  163. package/dist/apps/validators/joi-validators/update.appWebhookEvent.validator.js.map +0 -1
  164. package/dist/apps/validators/joi-validators/update.validation.entityData.validator.d.ts +0 -3
  165. package/dist/apps/validators/joi-validators/update.validation.entityData.validator.js +0 -60
  166. package/dist/apps/validators/joi-validators/update.validation.entityData.validator.js.map +0 -1
  167. package/dist/bin.d.ts +0 -26
  168. package/dist/bin.js +0 -28
  169. package/dist/bin.js.map +0 -1
  170. package/dist/brokers/brokers.service.d.ts +0 -438
  171. package/dist/brokers/brokers.service.js +0 -1294
  172. package/dist/brokers/brokers.service.js.map +0 -1
  173. package/dist/brokers/index.d.ts +0 -46
  174. package/dist/brokers/index.js +0 -83
  175. package/dist/brokers/index.js.map +0 -1
  176. package/dist/brokers/types/index.d.ts +0 -569
  177. package/dist/brokers/types/index.js +0 -8
  178. package/dist/brokers/types/index.js.map +0 -1
  179. package/dist/brokers/utils/broker.util.d.ts +0 -33
  180. package/dist/brokers/utils/broker.util.js +0 -125
  181. package/dist/brokers/utils/broker.util.js.map +0 -1
  182. package/dist/brokers/utils/providers/aws-sqs.service.d.ts +0 -16
  183. package/dist/brokers/utils/providers/aws-sqs.service.js +0 -71
  184. package/dist/brokers/utils/providers/aws-sqs.service.js.map +0 -1
  185. package/dist/brokers/utils/providers/google-pubsub.service.d.ts +0 -16
  186. package/dist/brokers/utils/providers/google-pubsub.service.js +0 -43
  187. package/dist/brokers/utils/providers/google-pubsub.service.js.map +0 -1
  188. package/dist/brokers/utils/providers/index.d.ts +0 -6
  189. package/dist/brokers/utils/providers/index.js +0 -16
  190. package/dist/brokers/utils/providers/index.js.map +0 -1
  191. package/dist/brokers/utils/providers/kafka.service.d.ts +0 -23
  192. package/dist/brokers/utils/providers/kafka.service.js +0 -131
  193. package/dist/brokers/utils/providers/kafka.service.js.map +0 -1
  194. package/dist/brokers/utils/providers/nats.service.d.ts +0 -18
  195. package/dist/brokers/utils/providers/nats.service.js +0 -63
  196. package/dist/brokers/utils/providers/nats.service.js.map +0 -1
  197. package/dist/brokers/utils/providers/rabbitmq.service.d.ts +0 -25
  198. package/dist/brokers/utils/providers/rabbitmq.service.js +0 -138
  199. package/dist/brokers/utils/providers/rabbitmq.service.js.map +0 -1
  200. package/dist/brokers/utils/providers/redis.service.d.ts +0 -18
  201. package/dist/brokers/utils/providers/redis.service.js +0 -93
  202. package/dist/brokers/utils/providers/redis.service.js.map +0 -1
  203. package/dist/cache/cache.manager.d.ts +0 -308
  204. package/dist/cache/cache.manager.js +0 -900
  205. package/dist/cache/cache.manager.js.map +0 -1
  206. package/dist/cache/cache.service.d.ts +0 -192
  207. package/dist/cache/cache.service.js +0 -596
  208. package/dist/cache/cache.service.js.map +0 -1
  209. package/dist/cache/index.d.ts +0 -52
  210. package/dist/cache/index.js +0 -81
  211. package/dist/cache/index.js.map +0 -1
  212. package/dist/cache/types/index.d.ts +0 -112
  213. package/dist/cache/types/index.js +0 -6
  214. package/dist/cache/types/index.js.map +0 -1
  215. package/dist/clients/apps.client.d.ts +0 -4
  216. package/dist/clients/apps.client.js +0 -31
  217. package/dist/clients/apps.client.js.map +0 -1
  218. package/dist/clients/email.client.d.ts +0 -4
  219. package/dist/clients/email.client.js +0 -29
  220. package/dist/clients/email.client.js.map +0 -1
  221. package/dist/clients/expo.client.d.ts +0 -3
  222. package/dist/clients/expo.client.js +0 -28
  223. package/dist/clients/expo.client.js.map +0 -1
  224. package/dist/clients/function.client.d.ts +0 -3
  225. package/dist/clients/function.client.js +0 -27
  226. package/dist/clients/function.client.js.map +0 -1
  227. package/dist/clients/http.client.d.ts +0 -3
  228. package/dist/clients/http.client.js +0 -27
  229. package/dist/clients/http.client.js.map +0 -1
  230. package/dist/clients/logs.client.d.ts +0 -4
  231. package/dist/clients/logs.client.js +0 -34
  232. package/dist/clients/logs.client.js.map +0 -1
  233. package/dist/clients/pricing.client.d.ts +0 -4
  234. package/dist/clients/pricing.client.js +0 -34
  235. package/dist/clients/pricing.client.js.map +0 -1
  236. package/dist/clients/products.client.d.ts +0 -3
  237. package/dist/clients/products.client.js +0 -32
  238. package/dist/clients/products.client.js.map +0 -1
  239. package/dist/clients/users.client.d.ts +0 -4
  240. package/dist/clients/users.client.js +0 -34
  241. package/dist/clients/users.client.js.map +0 -1
  242. package/dist/clients/webhooks.client.d.ts +0 -4
  243. package/dist/clients/webhooks.client.js +0 -34
  244. package/dist/clients/webhooks.client.js.map +0 -1
  245. package/dist/clients/workspace.client.d.ts +0 -7
  246. package/dist/clients/workspace.client.js +0 -39
  247. package/dist/clients/workspace.client.js.map +0 -1
  248. package/dist/database/actions/action-manager.d.ts +0 -170
  249. package/dist/database/actions/action-manager.js +0 -465
  250. package/dist/database/actions/action-manager.js.map +0 -1
  251. package/dist/database/actions/index.d.ts +0 -6
  252. package/dist/database/actions/index.js +0 -13
  253. package/dist/database/actions/index.js.map +0 -1
  254. package/dist/database/adapters/adapter.factory.d.ts +0 -62
  255. package/dist/database/adapters/adapter.factory.js +0 -97
  256. package/dist/database/adapters/adapter.factory.js.map +0 -1
  257. package/dist/database/adapters/base.adapter.d.ts +0 -423
  258. package/dist/database/adapters/base.adapter.js +0 -260
  259. package/dist/database/adapters/base.adapter.js.map +0 -1
  260. package/dist/database/adapters/cassandra.adapter.d.ts +0 -92
  261. package/dist/database/adapters/cassandra.adapter.js +0 -1091
  262. package/dist/database/adapters/cassandra.adapter.js.map +0 -1
  263. package/dist/database/adapters/dynamodb.adapter.d.ts +0 -110
  264. package/dist/database/adapters/dynamodb.adapter.js +0 -1564
  265. package/dist/database/adapters/dynamodb.adapter.js.map +0 -1
  266. package/dist/database/adapters/index.d.ts +0 -11
  267. package/dist/database/adapters/index.js +0 -27
  268. package/dist/database/adapters/index.js.map +0 -1
  269. package/dist/database/adapters/mariadb.adapter.d.ts +0 -100
  270. package/dist/database/adapters/mariadb.adapter.js +0 -247
  271. package/dist/database/adapters/mariadb.adapter.js.map +0 -1
  272. package/dist/database/adapters/mongodb.adapter.d.ts +0 -121
  273. package/dist/database/adapters/mongodb.adapter.js +0 -1284
  274. package/dist/database/adapters/mongodb.adapter.js.map +0 -1
  275. package/dist/database/adapters/mysql.adapter.d.ts +0 -86
  276. package/dist/database/adapters/mysql.adapter.js +0 -1371
  277. package/dist/database/adapters/mysql.adapter.js.map +0 -1
  278. package/dist/database/adapters/postgresql.adapter.d.ts +0 -90
  279. package/dist/database/adapters/postgresql.adapter.js +0 -1487
  280. package/dist/database/adapters/postgresql.adapter.js.map +0 -1
  281. package/dist/database/databases.service.d.ts +0 -1496
  282. package/dist/database/databases.service.js +0 -3294
  283. package/dist/database/databases.service.js.map +0 -1
  284. package/dist/database/index.d.ts +0 -46
  285. package/dist/database/index.js +0 -109
  286. package/dist/database/index.js.map +0 -1
  287. package/dist/database/migrations/index.d.ts +0 -6
  288. package/dist/database/migrations/index.js +0 -12
  289. package/dist/database/migrations/index.js.map +0 -1
  290. package/dist/database/migrations/migration-engine.d.ts +0 -136
  291. package/dist/database/migrations/migration-engine.js +0 -1421
  292. package/dist/database/migrations/migration-engine.js.map +0 -1
  293. package/dist/database/operators/aggregation-builder.d.ts +0 -67
  294. package/dist/database/operators/aggregation-builder.js +0 -841
  295. package/dist/database/operators/aggregation-builder.js.map +0 -1
  296. package/dist/database/operators/index.d.ts +0 -7
  297. package/dist/database/operators/index.js +0 -15
  298. package/dist/database/operators/index.js.map +0 -1
  299. package/dist/database/operators/query-builder.d.ts +0 -69
  300. package/dist/database/operators/query-builder.js +0 -447
  301. package/dist/database/operators/query-builder.js.map +0 -1
  302. package/dist/database/presave/decrypt.d.ts +0 -25
  303. package/dist/database/presave/decrypt.js +0 -146
  304. package/dist/database/presave/decrypt.js.map +0 -1
  305. package/dist/database/presave/index.d.ts +0 -9
  306. package/dist/database/presave/index.js +0 -18
  307. package/dist/database/presave/index.js.map +0 -1
  308. package/dist/database/presave/presave-processor.d.ts +0 -148
  309. package/dist/database/presave/presave-processor.js +0 -702
  310. package/dist/database/presave/presave-processor.js.map +0 -1
  311. package/dist/database/schema/index.d.ts +0 -7
  312. package/dist/database/schema/index.js +0 -13
  313. package/dist/database/schema/index.js.map +0 -1
  314. package/dist/database/schema/schema-manager.d.ts +0 -258
  315. package/dist/database/schema/schema-manager.js +0 -638
  316. package/dist/database/schema/schema-manager.js.map +0 -1
  317. package/dist/database/transactions/index.d.ts +0 -6
  318. package/dist/database/transactions/index.js +0 -13
  319. package/dist/database/transactions/index.js.map +0 -1
  320. package/dist/database/transactions/transaction-manager.d.ts +0 -113
  321. package/dist/database/transactions/transaction-manager.js +0 -344
  322. package/dist/database/transactions/transaction-manager.js.map +0 -1
  323. package/dist/database/triggers/index.d.ts +0 -7
  324. package/dist/database/triggers/index.js +0 -14
  325. package/dist/database/triggers/index.js.map +0 -1
  326. package/dist/database/triggers/trigger-processor.d.ts +0 -239
  327. package/dist/database/triggers/trigger-processor.js +0 -1034
  328. package/dist/database/triggers/trigger-processor.js.map +0 -1
  329. package/dist/database/types/action.interface.d.ts +0 -148
  330. package/dist/database/types/action.interface.js +0 -6
  331. package/dist/database/types/action.interface.js.map +0 -1
  332. package/dist/database/types/aggregation.interface.d.ts +0 -185
  333. package/dist/database/types/aggregation.interface.js +0 -6
  334. package/dist/database/types/aggregation.interface.js.map +0 -1
  335. package/dist/database/types/connection.interface.d.ts +0 -137
  336. package/dist/database/types/connection.interface.js +0 -6
  337. package/dist/database/types/connection.interface.js.map +0 -1
  338. package/dist/database/types/dashboard.interface.d.ts +0 -74
  339. package/dist/database/types/dashboard.interface.js +0 -7
  340. package/dist/database/types/dashboard.interface.js.map +0 -1
  341. package/dist/database/types/enums.d.ts +0 -195
  342. package/dist/database/types/enums.js +0 -244
  343. package/dist/database/types/enums.js.map +0 -1
  344. package/dist/database/types/index.d.ts +0 -15
  345. package/dist/database/types/index.js +0 -31
  346. package/dist/database/types/index.js.map +0 -1
  347. package/dist/database/types/migration.interface.d.ts +0 -686
  348. package/dist/database/types/migration.interface.js +0 -9
  349. package/dist/database/types/migration.interface.js.map +0 -1
  350. package/dist/database/types/presave.interface.d.ts +0 -292
  351. package/dist/database/types/presave.interface.js +0 -60
  352. package/dist/database/types/presave.interface.js.map +0 -1
  353. package/dist/database/types/query.interface.d.ts +0 -205
  354. package/dist/database/types/query.interface.js +0 -6
  355. package/dist/database/types/query.interface.js.map +0 -1
  356. package/dist/database/types/schema.interface.d.ts +0 -412
  357. package/dist/database/types/schema.interface.js +0 -6
  358. package/dist/database/types/schema.interface.js.map +0 -1
  359. package/dist/database/types/transaction.interface.d.ts +0 -84
  360. package/dist/database/types/transaction.interface.js +0 -6
  361. package/dist/database/types/transaction.interface.js.map +0 -1
  362. package/dist/database/types/trigger.interface.d.ts +0 -612
  363. package/dist/database/types/trigger.interface.js +0 -121
  364. package/dist/database/types/trigger.interface.js.map +0 -1
  365. package/dist/database/types/write.interface.d.ts +0 -216
  366. package/dist/database/types/write.interface.js +0 -6
  367. package/dist/database/types/write.interface.js.map +0 -1
  368. package/dist/database/utils/database-error.d.ts +0 -96
  369. package/dist/database/utils/database-error.js +0 -221
  370. package/dist/database/utils/database-error.js.map +0 -1
  371. package/dist/database/utils/index.d.ts +0 -6
  372. package/dist/database/utils/index.js +0 -11
  373. package/dist/database/utils/index.js.map +0 -1
  374. package/dist/graph/adapters/adapter.factory.d.ts +0 -47
  375. package/dist/graph/adapters/adapter.factory.js +0 -77
  376. package/dist/graph/adapters/adapter.factory.js.map +0 -1
  377. package/dist/graph/adapters/arangodb.adapter.d.ts +0 -86
  378. package/dist/graph/adapters/arangodb.adapter.js +0 -1588
  379. package/dist/graph/adapters/arangodb.adapter.js.map +0 -1
  380. package/dist/graph/adapters/base.adapter.d.ts +0 -264
  381. package/dist/graph/adapters/base.adapter.js +0 -156
  382. package/dist/graph/adapters/base.adapter.js.map +0 -1
  383. package/dist/graph/adapters/index.d.ts +0 -11
  384. package/dist/graph/adapters/index.js +0 -21
  385. package/dist/graph/adapters/index.js.map +0 -1
  386. package/dist/graph/adapters/memgraph.adapter.d.ts +0 -110
  387. package/dist/graph/adapters/memgraph.adapter.js +0 -1452
  388. package/dist/graph/adapters/memgraph.adapter.js.map +0 -1
  389. package/dist/graph/adapters/neo4j.adapter.d.ts +0 -81
  390. package/dist/graph/adapters/neo4j.adapter.js +0 -1317
  391. package/dist/graph/adapters/neo4j.adapter.js.map +0 -1
  392. package/dist/graph/adapters/neptune.adapter.d.ts +0 -82
  393. package/dist/graph/adapters/neptune.adapter.js +0 -1369
  394. package/dist/graph/adapters/neptune.adapter.js.map +0 -1
  395. package/dist/graph/graphs.service.d.ts +0 -617
  396. package/dist/graph/graphs.service.js +0 -2594
  397. package/dist/graph/graphs.service.js.map +0 -1
  398. package/dist/graph/index.d.ts +0 -57
  399. package/dist/graph/index.js +0 -77
  400. package/dist/graph/index.js.map +0 -1
  401. package/dist/graph/transactions/index.d.ts +0 -4
  402. package/dist/graph/transactions/index.js +0 -9
  403. package/dist/graph/transactions/index.js.map +0 -1
  404. package/dist/graph/transactions/transaction-manager.d.ts +0 -61
  405. package/dist/graph/transactions/transaction-manager.js +0 -126
  406. package/dist/graph/transactions/transaction-manager.js.map +0 -1
  407. package/dist/graph/types/connection.interface.d.ts +0 -149
  408. package/dist/graph/types/connection.interface.js +0 -9
  409. package/dist/graph/types/connection.interface.js.map +0 -1
  410. package/dist/graph/types/enums.d.ts +0 -101
  411. package/dist/graph/types/enums.js +0 -114
  412. package/dist/graph/types/enums.js.map +0 -1
  413. package/dist/graph/types/index.d.ts +0 -13
  414. package/dist/graph/types/index.js +0 -20
  415. package/dist/graph/types/index.js.map +0 -1
  416. package/dist/graph/types/node.interface.d.ts +0 -248
  417. package/dist/graph/types/node.interface.js +0 -9
  418. package/dist/graph/types/node.interface.js.map +0 -1
  419. package/dist/graph/types/query.interface.d.ts +0 -175
  420. package/dist/graph/types/query.interface.js +0 -9
  421. package/dist/graph/types/query.interface.js.map +0 -1
  422. package/dist/graph/types/relationship.interface.d.ts +0 -207
  423. package/dist/graph/types/relationship.interface.js +0 -9
  424. package/dist/graph/types/relationship.interface.js.map +0 -1
  425. package/dist/graph/types/schema.interface.d.ts +0 -295
  426. package/dist/graph/types/schema.interface.js +0 -9
  427. package/dist/graph/types/schema.interface.js.map +0 -1
  428. package/dist/graph/types/transaction.interface.d.ts +0 -55
  429. package/dist/graph/types/transaction.interface.js +0 -9
  430. package/dist/graph/types/transaction.interface.js.map +0 -1
  431. package/dist/graph/types/traversal.interface.d.ts +0 -181
  432. package/dist/graph/types/traversal.interface.js +0 -9
  433. package/dist/graph/types/traversal.interface.js.map +0 -1
  434. package/dist/graph/utils/graph-error.d.ts +0 -71
  435. package/dist/graph/utils/graph-error.js +0 -142
  436. package/dist/graph/utils/graph-error.js.map +0 -1
  437. package/dist/graph/utils/index.d.ts +0 -4
  438. package/dist/graph/utils/index.js +0 -9
  439. package/dist/graph/utils/index.js.map +0 -1
  440. package/dist/imports/imports.repo.d.ts +0 -0
  441. package/dist/imports/imports.repo.js +0 -1
  442. package/dist/imports/imports.repo.js.map +0 -1
  443. package/dist/imports/imports.service.d.ts +0 -23
  444. package/dist/imports/imports.service.js +0 -71
  445. package/dist/imports/imports.service.js.map +0 -1
  446. package/dist/imports/imports.types.d.ts +0 -350
  447. package/dist/imports/imports.types.js +0 -33
  448. package/dist/imports/imports.types.js.map +0 -1
  449. package/dist/imports/openAPI3.0.types.d.ts +0 -52
  450. package/dist/imports/openAPI3.0.types.js +0 -3
  451. package/dist/imports/openAPI3.0.types.js.map +0 -1
  452. package/dist/imports/repos/openApi.repo.d.ts +0 -6
  453. package/dist/imports/repos/openApi.repo.js +0 -422
  454. package/dist/imports/repos/openApi.repo.js.map +0 -1
  455. package/dist/imports/repos/postmanV21.repo.d.ts +0 -14
  456. package/dist/imports/repos/postmanV21.repo.js +0 -257
  457. package/dist/imports/repos/postmanV21.repo.js.map +0 -1
  458. package/dist/imports/utils/imports.utils.d.ts +0 -80
  459. package/dist/imports/utils/imports.utils.js +0 -114
  460. package/dist/imports/utils/imports.utils.js.map +0 -1
  461. package/dist/imports/validators/index.d.ts +0 -0
  462. package/dist/imports/validators/index.js +0 -1
  463. package/dist/imports/validators/index.js.map +0 -1
  464. package/dist/imports/validators/joi-validators/postmanV21.validator.d.ts +0 -5
  465. package/dist/imports/validators/joi-validators/postmanV21.validator.js +0 -96
  466. package/dist/imports/validators/joi-validators/postmanV21.validator.js.map +0 -1
  467. package/dist/index.d.ts +0 -4021
  468. package/dist/index.js +0 -5895
  469. package/dist/index.js.map +0 -1
  470. package/dist/init.interface.d.ts +0 -407
  471. package/dist/init.interface.js +0 -3
  472. package/dist/init.interface.js.map +0 -1
  473. package/dist/inputs/inputs.repo.d.ts +0 -7
  474. package/dist/inputs/inputs.repo.js +0 -16
  475. package/dist/inputs/inputs.repo.js.map +0 -1
  476. package/dist/inputs/inputs.service.d.ts +0 -61
  477. package/dist/inputs/inputs.service.js +0 -468
  478. package/dist/inputs/inputs.service.js.map +0 -1
  479. package/dist/inputs/utils/inputs.utils.create.d.ts +0 -11
  480. package/dist/inputs/utils/inputs.utils.create.js +0 -273
  481. package/dist/inputs/utils/inputs.utils.create.js.map +0 -1
  482. package/dist/inputs/validators/inputs.validator.parse.d.ts +0 -4
  483. package/dist/inputs/validators/inputs.validator.parse.js +0 -53
  484. package/dist/inputs/validators/inputs.validator.parse.js.map +0 -1
  485. package/dist/jobs/index.d.ts +0 -38
  486. package/dist/jobs/index.js +0 -50
  487. package/dist/jobs/index.js.map +0 -1
  488. package/dist/jobs/jobs.service.d.ts +0 -154
  489. package/dist/jobs/jobs.service.js +0 -491
  490. package/dist/jobs/jobs.service.js.map +0 -1
  491. package/dist/jobs/jobs.state.d.ts +0 -113
  492. package/dist/jobs/jobs.state.js +0 -447
  493. package/dist/jobs/jobs.state.js.map +0 -1
  494. package/dist/jobs/types.d.ts +0 -449
  495. package/dist/jobs/types.js +0 -74
  496. package/dist/jobs/types.js.map +0 -1
  497. package/dist/logs/logs.repo.d.ts +0 -6
  498. package/dist/logs/logs.repo.js +0 -12
  499. package/dist/logs/logs.repo.js.map +0 -1
  500. package/dist/logs/logs.service.d.ts +0 -30
  501. package/dist/logs/logs.service.js +0 -89
  502. package/dist/logs/logs.service.js.map +0 -1
  503. package/dist/logs/logs.types.d.ts +0 -85
  504. package/dist/logs/logs.types.js +0 -52
  505. package/dist/logs/logs.types.js.map +0 -1
  506. package/dist/logs/utils/logs.utils.create.d.ts +0 -0
  507. package/dist/logs/utils/logs.utils.create.js +0 -1
  508. package/dist/logs/utils/logs.utils.create.js.map +0 -1
  509. package/dist/logs/utils/logs.utils.errors.d.ts +0 -2
  510. package/dist/logs/utils/logs.utils.errors.js +0 -8
  511. package/dist/logs/utils/logs.utils.errors.js.map +0 -1
  512. package/dist/models/index.d.ts +0 -6
  513. package/dist/models/index.js +0 -11
  514. package/dist/models/index.js.map +0 -1
  515. package/dist/models/models.service.d.ts +0 -137
  516. package/dist/models/models.service.js +0 -195
  517. package/dist/models/models.service.js.map +0 -1
  518. package/dist/notifications/index.d.ts +0 -13
  519. package/dist/notifications/index.js +0 -26
  520. package/dist/notifications/index.js.map +0 -1
  521. package/dist/notifications/notifications.service.d.ts +0 -268
  522. package/dist/notifications/notifications.service.js +0 -907
  523. package/dist/notifications/notifications.service.js.map +0 -1
  524. package/dist/notifications/types/index.d.ts +0 -4
  525. package/dist/notifications/types/index.js +0 -21
  526. package/dist/notifications/types/index.js.map +0 -1
  527. package/dist/notifications/types/notifications.types.d.ts +0 -454
  528. package/dist/notifications/types/notifications.types.js +0 -51
  529. package/dist/notifications/types/notifications.types.js.map +0 -1
  530. package/dist/parsers/index.d.ts +0 -3
  531. package/dist/parsers/index.js +0 -27
  532. package/dist/parsers/index.js.map +0 -1
  533. package/dist/parsers/pipelines/postman.pipelines.d.ts +0 -15
  534. package/dist/parsers/pipelines/postman.pipelines.js +0 -103
  535. package/dist/parsers/pipelines/postman.pipelines.js.map +0 -1
  536. package/dist/parsers/types/postman.types.d.ts +0 -200
  537. package/dist/parsers/types/postman.types.js +0 -3
  538. package/dist/parsers/types/postman.types.js.map +0 -1
  539. package/dist/parsers/utils/postman.utils.d.ts +0 -12
  540. package/dist/parsers/utils/postman.utils.js +0 -116
  541. package/dist/parsers/utils/postman.utils.js.map +0 -1
  542. package/dist/parsers/validators/postman-auth.validators.d.ts +0 -10
  543. package/dist/parsers/validators/postman-auth.validators.js +0 -127
  544. package/dist/parsers/validators/postman-auth.validators.js.map +0 -1
  545. package/dist/parsers/validators/postman-request.validators.d.ts +0 -13
  546. package/dist/parsers/validators/postman-request.validators.js +0 -139
  547. package/dist/parsers/validators/postman-request.validators.js.map +0 -1
  548. package/dist/parsers/validators/postman-response.validators.d.ts +0 -13
  549. package/dist/parsers/validators/postman-response.validators.js +0 -150
  550. package/dist/parsers/validators/postman-response.validators.js.map +0 -1
  551. package/dist/parsers/validators/postman-variable.validators.d.ts +0 -14
  552. package/dist/parsers/validators/postman-variable.validators.js +0 -163
  553. package/dist/parsers/validators/postman-variable.validators.js.map +0 -1
  554. package/dist/pricing/pricing.repo.d.ts +0 -0
  555. package/dist/pricing/pricing.repo.js +0 -1
  556. package/dist/pricing/pricing.repo.js.map +0 -1
  557. package/dist/pricing/pricing.service.d.ts +0 -24
  558. package/dist/pricing/pricing.service.js +0 -51
  559. package/dist/pricing/pricing.service.js.map +0 -1
  560. package/dist/pricing/pricing.types.d.ts +0 -76
  561. package/dist/pricing/pricing.types.js +0 -21
  562. package/dist/pricing/pricing.types.js.map +0 -1
  563. package/dist/pricing/utils/string.utils.d.ts +0 -1
  564. package/dist/pricing/utils/string.utils.js +0 -9
  565. package/dist/pricing/utils/string.utils.js.map +0 -1
  566. package/dist/processor/repos/mongo.repo.d.ts +0 -39
  567. package/dist/processor/repos/mongo.repo.js +0 -260
  568. package/dist/processor/repos/mongo.repo.js.map +0 -1
  569. package/dist/processor/repos/postgres.repo.d.ts +0 -31
  570. package/dist/processor/repos/postgres.repo.js +0 -185
  571. package/dist/processor/repos/postgres.repo.js.map +0 -1
  572. package/dist/processor/repos/sms.repo.d.ts +0 -39
  573. package/dist/processor/repos/sms.repo.js +0 -124
  574. package/dist/processor/repos/sms.repo.js.map +0 -1
  575. package/dist/processor/services/processor.service.d.ts +0 -465
  576. package/dist/processor/services/processor.service.js +0 -5343
  577. package/dist/processor/services/processor.service.js.map +0 -1
  578. package/dist/processor/services/request.service.d.ts +0 -36
  579. package/dist/processor/services/request.service.js +0 -304
  580. package/dist/processor/services/request.service.js.map +0 -1
  581. package/dist/processor/types/request.types.d.ts +0 -14
  582. package/dist/processor/types/request.types.js +0 -3
  583. package/dist/processor/types/request.types.js.map +0 -1
  584. package/dist/processor/utils/processor.utils.d.ts +0 -104
  585. package/dist/processor/utils/processor.utils.js +0 -1066
  586. package/dist/processor/utils/processor.utils.js.map +0 -1
  587. package/dist/processor/utils/request.utils.d.ts +0 -20
  588. package/dist/processor/utils/request.utils.js +0 -113
  589. package/dist/processor/utils/request.utils.js.map +0 -1
  590. package/dist/processor/utils/storage.util.d.ts +0 -8
  591. package/dist/processor/utils/storage.util.js +0 -106
  592. package/dist/processor/utils/storage.util.js.map +0 -1
  593. package/dist/products/services/products.service.d.ts +0 -577
  594. package/dist/products/services/products.service.js +0 -5845
  595. package/dist/products/services/products.service.js.map +0 -1
  596. package/dist/products/utils/crypt.utils.d.ts +0 -1
  597. package/dist/products/utils/crypt.utils.js +0 -17
  598. package/dist/products/utils/crypt.utils.js.map +0 -1
  599. package/dist/products/utils/functions.utils.d.ts +0 -13
  600. package/dist/products/utils/functions.utils.js +0 -294
  601. package/dist/products/utils/functions.utils.js.map +0 -1
  602. package/dist/products/utils/objects.utils.d.ts +0 -13
  603. package/dist/products/utils/objects.utils.js +0 -89
  604. package/dist/products/utils/objects.utils.js.map +0 -1
  605. package/dist/products/utils/string.utils.d.ts +0 -12
  606. package/dist/products/utils/string.utils.js +0 -168
  607. package/dist/products/utils/string.utils.js.map +0 -1
  608. package/dist/products/validators/index.d.ts +0 -33
  609. package/dist/products/validators/index.js +0 -75
  610. package/dist/products/validators/index.js.map +0 -1
  611. package/dist/products/validators/joi-validators/create.html.validator.d.ts +0 -2
  612. package/dist/products/validators/joi-validators/create.html.validator.js +0 -55
  613. package/dist/products/validators/joi-validators/create.html.validator.js.map +0 -1
  614. package/dist/products/validators/joi-validators/create.productAgent.validator.d.ts +0 -3
  615. package/dist/products/validators/joi-validators/create.productAgent.validator.js +0 -266
  616. package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +0 -1
  617. package/dist/products/validators/joi-validators/create.productApp.validator.d.ts +0 -4
  618. package/dist/products/validators/joi-validators/create.productApp.validator.js +0 -61
  619. package/dist/products/validators/joi-validators/create.productApp.validator.js.map +0 -1
  620. package/dist/products/validators/joi-validators/create.productCache.validator.d.ts +0 -3
  621. package/dist/products/validators/joi-validators/create.productCache.validator.js +0 -46
  622. package/dist/products/validators/joi-validators/create.productCache.validator.js.map +0 -1
  623. package/dist/products/validators/joi-validators/create.productDatabase.validator.d.ts +0 -3
  624. package/dist/products/validators/joi-validators/create.productDatabase.validator.js +0 -77
  625. package/dist/products/validators/joi-validators/create.productDatabase.validator.js.map +0 -1
  626. package/dist/products/validators/joi-validators/create.productDatabaseAction.validator.d.ts +0 -7
  627. package/dist/products/validators/joi-validators/create.productDatabaseAction.validator.js +0 -194
  628. package/dist/products/validators/joi-validators/create.productDatabaseAction.validator.js.map +0 -1
  629. package/dist/products/validators/joi-validators/create.productDatabaseMigration.validator.d.ts +0 -4
  630. package/dist/products/validators/joi-validators/create.productDatabaseMigration.validator.js +0 -63
  631. package/dist/products/validators/joi-validators/create.productDatabaseMigration.validator.js.map +0 -1
  632. package/dist/products/validators/joi-validators/create.productEnv.validator.d.ts +0 -3
  633. package/dist/products/validators/joi-validators/create.productEnv.validator.js +0 -45
  634. package/dist/products/validators/joi-validators/create.productEnv.validator.js.map +0 -1
  635. package/dist/products/validators/joi-validators/create.productFallback.validator.d.ts +0 -3
  636. package/dist/products/validators/joi-validators/create.productFallback.validator.js +0 -64
  637. package/dist/products/validators/joi-validators/create.productFallback.validator.js.map +0 -1
  638. package/dist/products/validators/joi-validators/create.productFeature.validator.d.ts +0 -14
  639. package/dist/products/validators/joi-validators/create.productFeature.validator.js +0 -140
  640. package/dist/products/validators/joi-validators/create.productFeature.validator.js.map +0 -1
  641. package/dist/products/validators/joi-validators/create.productFunction.validator.d.ts +0 -3
  642. package/dist/products/validators/joi-validators/create.productFunction.validator.js +0 -57
  643. package/dist/products/validators/joi-validators/create.productFunction.validator.js.map +0 -1
  644. package/dist/products/validators/joi-validators/create.productGraph.validator.d.ts +0 -3
  645. package/dist/products/validators/joi-validators/create.productGraph.validator.js +0 -89
  646. package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +0 -1
  647. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.d.ts +0 -4
  648. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js +0 -58
  649. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js.map +0 -1
  650. package/dist/products/validators/joi-validators/create.productJob.validator.d.ts +0 -12
  651. package/dist/products/validators/joi-validators/create.productJob.validator.js +0 -60
  652. package/dist/products/validators/joi-validators/create.productJob.validator.js.map +0 -1
  653. package/dist/products/validators/joi-validators/create.productMessageBrokerTopic.validator.d.ts +0 -3
  654. package/dist/products/validators/joi-validators/create.productMessageBrokerTopic.validator.js +0 -52
  655. package/dist/products/validators/joi-validators/create.productMessageBrokerTopic.validator.js.map +0 -1
  656. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.d.ts +0 -3
  657. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +0 -193
  658. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +0 -1
  659. package/dist/products/validators/joi-validators/create.productModel.validator.d.ts +0 -3
  660. package/dist/products/validators/joi-validators/create.productModel.validator.js +0 -132
  661. package/dist/products/validators/joi-validators/create.productModel.validator.js.map +0 -1
  662. package/dist/products/validators/joi-validators/create.productNotification.validator.d.ts +0 -4
  663. package/dist/products/validators/joi-validators/create.productNotification.validator.js +0 -241
  664. package/dist/products/validators/joi-validators/create.productNotification.validator.js.map +0 -1
  665. package/dist/products/validators/joi-validators/create.productNotificationMessage.validator.d.ts +0 -3
  666. package/dist/products/validators/joi-validators/create.productNotificationMessage.validator.js +0 -57
  667. package/dist/products/validators/joi-validators/create.productNotificationMessage.validator.js.map +0 -1
  668. package/dist/products/validators/joi-validators/create.productNotifications.validator.d.ts +0 -0
  669. package/dist/products/validators/joi-validators/create.productNotifications.validator.js +0 -1
  670. package/dist/products/validators/joi-validators/create.productNotifications.validator.js.map +0 -1
  671. package/dist/products/validators/joi-validators/create.productQuota.validator.d.ts +0 -3
  672. package/dist/products/validators/joi-validators/create.productQuota.validator.js +0 -67
  673. package/dist/products/validators/joi-validators/create.productQuota.validator.js.map +0 -1
  674. package/dist/products/validators/joi-validators/create.productStorage.validator.d.ts +0 -3
  675. package/dist/products/validators/joi-validators/create.productStorage.validator.js +0 -158
  676. package/dist/products/validators/joi-validators/create.productStorage.validator.js.map +0 -1
  677. package/dist/products/validators/joi-validators/create.productVector.validator.d.ts +0 -3
  678. package/dist/products/validators/joi-validators/create.productVector.validator.js +0 -136
  679. package/dist/products/validators/joi-validators/create.productVector.validator.js.map +0 -1
  680. package/dist/products/validators/joi-validators/create.products.validator.d.ts +0 -3
  681. package/dist/products/validators/joi-validators/create.products.validator.js +0 -43
  682. package/dist/products/validators/joi-validators/create.products.validator.js.map +0 -1
  683. package/dist/products/validators/joi-validators/create.requestAction.validator.d.ts +0 -2
  684. package/dist/products/validators/joi-validators/create.requestAction.validator.js +0 -45
  685. package/dist/products/validators/joi-validators/create.requestAction.validator.js.map +0 -1
  686. package/dist/products/validators/joi-validators/create.userAuth.validator.d.ts +0 -3
  687. package/dist/products/validators/joi-validators/create.userAuth.validator.js +0 -48
  688. package/dist/products/validators/joi-validators/create.userAuth.validator.js.map +0 -1
  689. package/dist/products/validators/joi-validators/register.productWebhooks.validator.d.ts +0 -3
  690. package/dist/products/validators/joi-validators/register.productWebhooks.validator.js +0 -48
  691. package/dist/products/validators/joi-validators/register.productWebhooks.validator.js.map +0 -1
  692. package/dist/products/validators/joi-validators/update.dataValue.validator.d.ts +0 -3
  693. package/dist/products/validators/joi-validators/update.dataValue.validator.js +0 -103
  694. package/dist/products/validators/joi-validators/update.dataValue.validator.js.map +0 -1
  695. package/dist/products/validators/joi-validators/update.productApp.validator.d.ts +0 -3
  696. package/dist/products/validators/joi-validators/update.productApp.validator.js +0 -42
  697. package/dist/products/validators/joi-validators/update.productApp.validator.js.map +0 -1
  698. package/dist/products/validators/joi-validators/update.productCache.validator.d.ts +0 -3
  699. package/dist/products/validators/joi-validators/update.productCache.validator.js +0 -45
  700. package/dist/products/validators/joi-validators/update.productCache.validator.js.map +0 -1
  701. package/dist/products/validators/joi-validators/update.productDatabase.validator.d.ts +0 -3
  702. package/dist/products/validators/joi-validators/update.productDatabase.validator.js +0 -76
  703. package/dist/products/validators/joi-validators/update.productDatabase.validator.js.map +0 -1
  704. package/dist/products/validators/joi-validators/update.productDatabaseAction.validator.d.ts +0 -3
  705. package/dist/products/validators/joi-validators/update.productDatabaseAction.validator.js +0 -79
  706. package/dist/products/validators/joi-validators/update.productDatabaseAction.validator.js.map +0 -1
  707. package/dist/products/validators/joi-validators/update.productDatabaseMigration.validator.d.ts +0 -4
  708. package/dist/products/validators/joi-validators/update.productDatabaseMigration.validator.js +0 -64
  709. package/dist/products/validators/joi-validators/update.productDatabaseMigration.validator.js.map +0 -1
  710. package/dist/products/validators/joi-validators/update.productEnv.validator.d.ts +0 -3
  711. package/dist/products/validators/joi-validators/update.productEnv.validator.js +0 -46
  712. package/dist/products/validators/joi-validators/update.productEnv.validator.js.map +0 -1
  713. package/dist/products/validators/joi-validators/update.productFallback.validator.d.ts +0 -3
  714. package/dist/products/validators/joi-validators/update.productFallback.validator.js +0 -60
  715. package/dist/products/validators/joi-validators/update.productFallback.validator.js.map +0 -1
  716. package/dist/products/validators/joi-validators/update.productFeature.validator.d.ts +0 -3
  717. package/dist/products/validators/joi-validators/update.productFeature.validator.js +0 -53
  718. package/dist/products/validators/joi-validators/update.productFeature.validator.js.map +0 -1
  719. package/dist/products/validators/joi-validators/update.productFunction.validator.d.ts +0 -3
  720. package/dist/products/validators/joi-validators/update.productFunction.validator.js +0 -41
  721. package/dist/products/validators/joi-validators/update.productFunction.validator.js.map +0 -1
  722. package/dist/products/validators/joi-validators/update.productGraph.validator.d.ts +0 -3
  723. package/dist/products/validators/joi-validators/update.productGraph.validator.js +0 -88
  724. package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +0 -1
  725. package/dist/products/validators/joi-validators/update.productJob.validator.d.ts +0 -3
  726. package/dist/products/validators/joi-validators/update.productJob.validator.js +0 -50
  727. package/dist/products/validators/joi-validators/update.productJob.validator.js.map +0 -1
  728. package/dist/products/validators/joi-validators/update.productMessageBrokerTopic.validator.d.ts +0 -3
  729. package/dist/products/validators/joi-validators/update.productMessageBrokerTopic.validator.js +0 -52
  730. package/dist/products/validators/joi-validators/update.productMessageBrokerTopic.validator.js.map +0 -1
  731. package/dist/products/validators/joi-validators/update.productNotification.validator.d.ts +0 -3
  732. package/dist/products/validators/joi-validators/update.productNotification.validator.js +0 -47
  733. package/dist/products/validators/joi-validators/update.productNotification.validator.js.map +0 -1
  734. package/dist/products/validators/joi-validators/update.productNotificationMessage.validator.d.ts +0 -3
  735. package/dist/products/validators/joi-validators/update.productNotificationMessage.validator.js +0 -58
  736. package/dist/products/validators/joi-validators/update.productNotificationMessage.validator.js.map +0 -1
  737. package/dist/products/validators/joi-validators/update.productQuota.validator.d.ts +0 -3
  738. package/dist/products/validators/joi-validators/update.productQuota.validator.js +0 -64
  739. package/dist/products/validators/joi-validators/update.productQuota.validator.js.map +0 -1
  740. package/dist/products/validators/joi-validators/update.userAuth.validator.d.ts +0 -3
  741. package/dist/products/validators/joi-validators/update.userAuth.validator.js +0 -48
  742. package/dist/products/validators/joi-validators/update.userAuth.validator.js.map +0 -1
  743. package/dist/resilience/fallback.service.d.ts +0 -141
  744. package/dist/resilience/fallback.service.js +0 -766
  745. package/dist/resilience/fallback.service.js.map +0 -1
  746. package/dist/resilience/healthcheck.service.d.ts +0 -163
  747. package/dist/resilience/healthcheck.service.js +0 -1012
  748. package/dist/resilience/healthcheck.service.js.map +0 -1
  749. package/dist/resilience/index.d.ts +0 -104
  750. package/dist/resilience/index.js +0 -140
  751. package/dist/resilience/index.js.map +0 -1
  752. package/dist/resilience/quota.service.d.ts +0 -83
  753. package/dist/resilience/quota.service.js +0 -518
  754. package/dist/resilience/quota.service.js.map +0 -1
  755. package/dist/resilience/resilience.service.d.ts +0 -98
  756. package/dist/resilience/resilience.service.js +0 -560
  757. package/dist/resilience/resilience.service.js.map +0 -1
  758. package/dist/resilience/types/index.d.ts +0 -513
  759. package/dist/resilience/types/index.js +0 -29
  760. package/dist/resilience/types/index.js.map +0 -1
  761. package/dist/secrets/index.d.ts +0 -10
  762. package/dist/secrets/index.js +0 -33
  763. package/dist/secrets/index.js.map +0 -1
  764. package/dist/secrets/secrets.resolver.d.ts +0 -52
  765. package/dist/secrets/secrets.resolver.js +0 -236
  766. package/dist/secrets/secrets.resolver.js.map +0 -1
  767. package/dist/secrets/secrets.service.d.ts +0 -93
  768. package/dist/secrets/secrets.service.js +0 -246
  769. package/dist/secrets/secrets.service.js.map +0 -1
  770. package/dist/secrets/secrets.types.d.ts +0 -188
  771. package/dist/secrets/secrets.types.js +0 -87
  772. package/dist/secrets/secrets.types.js.map +0 -1
  773. package/dist/sessions/index.d.ts +0 -50
  774. package/dist/sessions/index.js +0 -96
  775. package/dist/sessions/index.js.map +0 -1
  776. package/dist/sessions/sessions.helper.d.ts +0 -88
  777. package/dist/sessions/sessions.helper.js +0 -190
  778. package/dist/sessions/sessions.helper.js.map +0 -1
  779. package/dist/sessions/sessions.resolver.d.ts +0 -188
  780. package/dist/sessions/sessions.resolver.js +0 -603
  781. package/dist/sessions/sessions.resolver.js.map +0 -1
  782. package/dist/sessions/sessions.service.d.ts +0 -194
  783. package/dist/sessions/sessions.service.js +0 -988
  784. package/dist/sessions/sessions.service.js.map +0 -1
  785. package/dist/sessions/types/index.d.ts +0 -344
  786. package/dist/sessions/types/index.js +0 -6
  787. package/dist/sessions/types/index.js.map +0 -1
  788. package/dist/storage/index.d.ts +0 -66
  789. package/dist/storage/index.js +0 -99
  790. package/dist/storage/index.js.map +0 -1
  791. package/dist/storage/storage.service.d.ts +0 -177
  792. package/dist/storage/storage.service.js +0 -905
  793. package/dist/storage/storage.service.js.map +0 -1
  794. package/dist/storage/types/index.d.ts +0 -270
  795. package/dist/storage/types/index.js +0 -6
  796. package/dist/storage/types/index.js.map +0 -1
  797. package/dist/storage/utils/storage.util.d.ts +0 -62
  798. package/dist/storage/utils/storage.util.js +0 -593
  799. package/dist/storage/utils/storage.util.js.map +0 -1
  800. package/dist/types/actions.types.d.ts +0 -0
  801. package/dist/types/actions.types.js +0 -1
  802. package/dist/types/actions.types.js.map +0 -1
  803. package/dist/types/appBuilder.types.d.ts +0 -316
  804. package/dist/types/appBuilder.types.js +0 -3
  805. package/dist/types/appBuilder.types.js.map +0 -1
  806. package/dist/types/database.types.d.ts +0 -9
  807. package/dist/types/database.types.js +0 -3
  808. package/dist/types/database.types.js.map +0 -1
  809. package/dist/types/enums.d.ts +0 -231
  810. package/dist/types/enums.js +0 -261
  811. package/dist/types/enums.js.map +0 -1
  812. package/dist/types/index.d.ts +0 -12
  813. package/dist/types/index.js +0 -29
  814. package/dist/types/index.js.map +0 -1
  815. package/dist/types/index.types.d.ts +0 -30
  816. package/dist/types/index.types.js +0 -9
  817. package/dist/types/index.types.js.map +0 -1
  818. package/dist/types/inputs.types.d.ts +0 -114
  819. package/dist/types/inputs.types.js +0 -44
  820. package/dist/types/inputs.types.js.map +0 -1
  821. package/dist/types/logs.types.d.ts +0 -19
  822. package/dist/types/logs.types.js +0 -8
  823. package/dist/types/logs.types.js.map +0 -1
  824. package/dist/types/pricing.types.d.ts +0 -4
  825. package/dist/types/pricing.types.js +0 -3
  826. package/dist/types/pricing.types.js.map +0 -1
  827. package/dist/types/processor.types.d.ts +0 -602
  828. package/dist/types/processor.types.js +0 -19
  829. package/dist/types/processor.types.js.map +0 -1
  830. package/dist/types/productsBuilder.types.d.ts +0 -1566
  831. package/dist/types/productsBuilder.types.js +0 -303
  832. package/dist/types/productsBuilder.types.js.map +0 -1
  833. package/dist/types/request-tracker.interface.d.ts +0 -0
  834. package/dist/types/request-tracker.interface.js +0 -1
  835. package/dist/types/request-tracker.interface.js.map +0 -1
  836. package/dist/types/requests.types.d.ts +0 -8
  837. package/dist/types/requests.types.js +0 -3
  838. package/dist/types/requests.types.js.map +0 -1
  839. package/dist/types/workspaces.types.d.ts +0 -28
  840. package/dist/types/workspaces.types.js +0 -4
  841. package/dist/types/workspaces.types.js.map +0 -1
  842. package/dist/utils/constants.d.ts +0 -1
  843. package/dist/utils/constants.js +0 -5
  844. package/dist/utils/constants.js.map +0 -1
  845. package/dist/utils/index.d.ts +0 -2
  846. package/dist/utils/index.js +0 -109
  847. package/dist/utils/index.js.map +0 -1
  848. package/dist/vector/actions/action-manager.d.ts +0 -140
  849. package/dist/vector/actions/action-manager.js +0 -356
  850. package/dist/vector/actions/action-manager.js.map +0 -1
  851. package/dist/vector/adapters/base.adapter.d.ts +0 -169
  852. package/dist/vector/adapters/base.adapter.js +0 -218
  853. package/dist/vector/adapters/base.adapter.js.map +0 -1
  854. package/dist/vector/adapters/index.d.ts +0 -10
  855. package/dist/vector/adapters/index.js +0 -19
  856. package/dist/vector/adapters/index.js.map +0 -1
  857. package/dist/vector/adapters/memory.adapter.d.ts +0 -85
  858. package/dist/vector/adapters/memory.adapter.js +0 -505
  859. package/dist/vector/adapters/memory.adapter.js.map +0 -1
  860. package/dist/vector/adapters/pinecone.adapter.d.ts +0 -52
  861. package/dist/vector/adapters/pinecone.adapter.js +0 -433
  862. package/dist/vector/adapters/pinecone.adapter.js.map +0 -1
  863. package/dist/vector/adapters/qdrant.adapter.d.ts +0 -56
  864. package/dist/vector/adapters/qdrant.adapter.js +0 -442
  865. package/dist/vector/adapters/qdrant.adapter.js.map +0 -1
  866. package/dist/vector/adapters/weaviate.adapter.d.ts +0 -68
  867. package/dist/vector/adapters/weaviate.adapter.js +0 -661
  868. package/dist/vector/adapters/weaviate.adapter.js.map +0 -1
  869. package/dist/vector/index.d.ts +0 -36
  870. package/dist/vector/index.js +0 -70
  871. package/dist/vector/index.js.map +0 -1
  872. package/dist/vector/types/action.interface.d.ts +0 -195
  873. package/dist/vector/types/action.interface.js +0 -100
  874. package/dist/vector/types/action.interface.js.map +0 -1
  875. package/dist/vector/types/connection.interface.d.ts +0 -151
  876. package/dist/vector/types/connection.interface.js +0 -8
  877. package/dist/vector/types/connection.interface.js.map +0 -1
  878. package/dist/vector/types/embedding.interface.d.ts +0 -144
  879. package/dist/vector/types/embedding.interface.js +0 -8
  880. package/dist/vector/types/embedding.interface.js.map +0 -1
  881. package/dist/vector/types/enums.d.ts +0 -104
  882. package/dist/vector/types/enums.js +0 -113
  883. package/dist/vector/types/enums.js.map +0 -1
  884. package/dist/vector/types/index.d.ts +0 -11
  885. package/dist/vector/types/index.js +0 -23
  886. package/dist/vector/types/index.js.map +0 -1
  887. package/dist/vector/types/vector.interface.d.ts +0 -315
  888. package/dist/vector/types/vector.interface.js +0 -8
  889. package/dist/vector/types/vector.interface.js.map +0 -1
  890. package/dist/vector/utils/index.d.ts +0 -6
  891. package/dist/vector/utils/index.js +0 -11
  892. package/dist/vector/utils/index.js.map +0 -1
  893. package/dist/vector/utils/vector-error.d.ts +0 -69
  894. package/dist/vector/utils/vector-error.js +0 -116
  895. package/dist/vector/utils/vector-error.js.map +0 -1
  896. package/dist/vector/vector-database.service.d.ts +0 -484
  897. package/dist/vector/vector-database.service.js +0 -1002
  898. package/dist/vector/vector-database.service.js.map +0 -1
  899. package/dist/vector/vector.service.d.ts +0 -283
  900. package/dist/vector/vector.service.js +0 -544
  901. package/dist/vector/vector.service.js.map +0 -1
  902. package/dist/warehouse/executor/index.d.ts +0 -5
  903. package/dist/warehouse/executor/index.js +0 -12
  904. package/dist/warehouse/executor/index.js.map +0 -1
  905. package/dist/warehouse/executor/joins/index.d.ts +0 -5
  906. package/dist/warehouse/executor/joins/index.js +0 -11
  907. package/dist/warehouse/executor/joins/index.js.map +0 -1
  908. package/dist/warehouse/executor/joins/join-executor.d.ts +0 -101
  909. package/dist/warehouse/executor/joins/join-executor.js +0 -493
  910. package/dist/warehouse/executor/joins/join-executor.js.map +0 -1
  911. package/dist/warehouse/executor/joins/semantic-join.d.ts +0 -64
  912. package/dist/warehouse/executor/joins/semantic-join.js +0 -241
  913. package/dist/warehouse/executor/joins/semantic-join.js.map +0 -1
  914. package/dist/warehouse/executor/single-source-executor.d.ts +0 -155
  915. package/dist/warehouse/executor/single-source-executor.js +0 -573
  916. package/dist/warehouse/executor/single-source-executor.js.map +0 -1
  917. package/dist/warehouse/index.d.ts +0 -79
  918. package/dist/warehouse/index.js +0 -111
  919. package/dist/warehouse/index.js.map +0 -1
  920. package/dist/warehouse/parser/index.d.ts +0 -4
  921. package/dist/warehouse/parser/index.js +0 -10
  922. package/dist/warehouse/parser/index.js.map +0 -1
  923. package/dist/warehouse/parser/query-parser.d.ts +0 -181
  924. package/dist/warehouse/parser/query-parser.js +0 -415
  925. package/dist/warehouse/parser/query-parser.js.map +0 -1
  926. package/dist/warehouse/registry/data-source-registry.d.ts +0 -207
  927. package/dist/warehouse/registry/data-source-registry.js +0 -396
  928. package/dist/warehouse/registry/data-source-registry.js.map +0 -1
  929. package/dist/warehouse/registry/index.d.ts +0 -4
  930. package/dist/warehouse/registry/index.js +0 -9
  931. package/dist/warehouse/registry/index.js.map +0 -1
  932. package/dist/warehouse/transactions/index.d.ts +0 -4
  933. package/dist/warehouse/transactions/index.js +0 -9
  934. package/dist/warehouse/transactions/index.js.map +0 -1
  935. package/dist/warehouse/transactions/saga-orchestrator.d.ts +0 -92
  936. package/dist/warehouse/transactions/saga-orchestrator.js +0 -383
  937. package/dist/warehouse/transactions/saga-orchestrator.js.map +0 -1
  938. package/dist/warehouse/types/index.d.ts +0 -9
  939. package/dist/warehouse/types/index.js +0 -33
  940. package/dist/warehouse/types/index.js.map +0 -1
  941. package/dist/warehouse/types/join.interface.d.ts +0 -225
  942. package/dist/warehouse/types/join.interface.js +0 -87
  943. package/dist/warehouse/types/join.interface.js.map +0 -1
  944. package/dist/warehouse/types/query.interface.d.ts +0 -232
  945. package/dist/warehouse/types/query.interface.js +0 -9
  946. package/dist/warehouse/types/query.interface.js.map +0 -1
  947. package/dist/warehouse/types/transaction.interface.d.ts +0 -236
  948. package/dist/warehouse/types/transaction.interface.js +0 -74
  949. package/dist/warehouse/types/transaction.interface.js.map +0 -1
  950. package/dist/warehouse/types/where.interface.d.ts +0 -208
  951. package/dist/warehouse/types/where.interface.js +0 -89
  952. package/dist/warehouse/types/where.interface.js.map +0 -1
  953. package/dist/warehouse/warehouse.service.d.ts +0 -200
  954. package/dist/warehouse/warehouse.service.js +0 -470
  955. package/dist/warehouse/warehouse.service.js.map +0 -1
  956. package/dist/workflows/index.d.ts +0 -30
  957. package/dist/workflows/index.js +0 -64
  958. package/dist/workflows/index.js.map +0 -1
  959. package/dist/workflows/types/index.d.ts +0 -6
  960. package/dist/workflows/types/index.js +0 -23
  961. package/dist/workflows/types/index.js.map +0 -1
  962. package/dist/workflows/types/workflows.types.d.ts +0 -1095
  963. package/dist/workflows/types/workflows.types.js +0 -13
  964. package/dist/workflows/types/workflows.types.js.map +0 -1
  965. package/dist/workflows/workflow-builder.d.ts +0 -70
  966. package/dist/workflows/workflow-builder.js +0 -353
  967. package/dist/workflows/workflow-builder.js.map +0 -1
  968. package/dist/workflows/workflow-executor.d.ts +0 -289
  969. package/dist/workflows/workflow-executor.js +0 -2467
  970. package/dist/workflows/workflow-executor.js.map +0 -1
  971. package/dist/workflows/workflows.service.d.ts +0 -412
  972. package/dist/workflows/workflows.service.js +0 -2233
  973. package/dist/workflows/workflows.service.js.map +0 -1
@@ -1,2233 +0,0 @@
1
- "use strict";
2
- /**
3
- * Workflow Service
4
- *
5
- * Main service class for workflow operations.
6
- * Provides CRUD operations and execution for Ductape Workflows.
7
- *
8
- * Based on Ductape Workflows Code-First API documentation.
9
- */
10
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- var desc = Object.getOwnPropertyDescriptor(m, k);
13
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
- desc = { enumerable: true, get: function() { return m[k]; } };
15
- }
16
- Object.defineProperty(o, k2, desc);
17
- }) : (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- o[k2] = m[k];
20
- }));
21
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
- Object.defineProperty(o, "default", { enumerable: true, value: v });
23
- }) : function(o, v) {
24
- o["default"] = v;
25
- });
26
- var __importStar = (this && this.__importStar) || (function () {
27
- var ownKeys = function(o) {
28
- ownKeys = Object.getOwnPropertyNames || function (o) {
29
- var ar = [];
30
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
- return ar;
32
- };
33
- return ownKeys(o);
34
- };
35
- return function (mod) {
36
- if (mod && mod.__esModule) return mod;
37
- var result = {};
38
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
- __setModuleDefault(result, mod);
40
- return result;
41
- };
42
- })();
43
- var __importDefault = (this && this.__importDefault) || function (mod) {
44
- return (mod && mod.__esModule) ? mod : { "default": mod };
45
- };
46
- Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.workflowService = exports.WorkflowService = exports.WorkflowError = void 0;
48
- const crypto_1 = require("crypto");
49
- const products_service_1 = __importDefault(require("../products/services/products.service"));
50
- const processor_service_1 = __importDefault(require("../processor/services/processor.service"));
51
- const workflowApi_service_1 = require("../api/services/workflowApi.service");
52
- const logs_service_1 = __importDefault(require("../logs/logs.service"));
53
- const logs_types_1 = require("../logs/logs.types");
54
- const processor_utils_1 = require("../processor/utils/processor.utils");
55
- const cache_manager_1 = require("../cache/cache.manager");
56
- const productsBuilder_types_1 = require("../types/productsBuilder.types");
57
- const workflow_executor_1 = require("./workflow-executor");
58
- /**
59
- * Error class for workflow-related errors
60
- */
61
- class WorkflowError extends Error {
62
- constructor(message, code, details) {
63
- if (typeof window !== 'undefined') {
64
- throw new Error('Ductape SDK can only be initialized in a server environment.');
65
- }
66
- super(message);
67
- this.code = code;
68
- this.details = details;
69
- this.name = 'WorkflowError';
70
- }
71
- static configurationError(message) {
72
- return new WorkflowError(message, 'CONFIGURATION_ERROR');
73
- }
74
- static validationError(message, details) {
75
- return new WorkflowError(message, 'VALIDATION_ERROR', details);
76
- }
77
- static notFoundError(message) {
78
- return new WorkflowError(message, 'NOT_FOUND');
79
- }
80
- static executionError(message, details) {
81
- return new WorkflowError(message, 'EXECUTION_ERROR', details);
82
- }
83
- }
84
- exports.WorkflowError = WorkflowError;
85
- /**
86
- * Main Workflow Service class
87
- * Provides unified interface for workflow management and execution
88
- */
89
- class WorkflowService {
90
- /**
91
- * Create a new WorkflowService instance
92
- * @param config - Optional configuration for authentication and workspace context
93
- */
94
- constructor(config) {
95
- /** Service configuration */
96
- this.config = null;
97
- /** ProductBuilder instances cache (keyed by product tag) */
98
- this.productBuilders = new Map();
99
- /** Local workflow configurations */
100
- this.localConfigs = new Map();
101
- /** Workflow API service for backend communication */
102
- this.workflowApiService = null;
103
- /** LogService instance for logging operations */
104
- this.logService = null;
105
- /** Current product ID for logging */
106
- this.productId = '';
107
- /** Cache manager for 3-tier caching */
108
- this.cacheManager = null;
109
- /** Local cache for cache configurations to avoid repeated API calls */
110
- this.cacheConfigCache = new Map();
111
- //console.log('[WorkflowService] constructor', { hasConfig: !!config, env_type: config?.env_type, hasRedis: !!config?.redis_client });
112
- this.config = config || null;
113
- this._privateKey = (config === null || config === void 0 ? void 0 : config.private_key) || '';
114
- if (config) {
115
- this.workflowApiService = new workflowApi_service_1.WorkflowApiService(config.env_type);
116
- console.log('[WorkflowService] WorkflowApiService initialized', { env_type: config.env_type });
117
- // Initialize CacheManager if Redis client is provided
118
- if (config.redis_client) {
119
- this.cacheManager = new cache_manager_1.CacheManager({
120
- workspace_id: config.workspace_id,
121
- public_key: config.public_key,
122
- user_id: config.user_id,
123
- token: config.token,
124
- env_type: config.env_type,
125
- redis_client: config.redis_client,
126
- });
127
- console.log('[WorkflowService] CacheManager initialized');
128
- }
129
- else {
130
- console.log('[WorkflowService] No redis_client provided, cache disabled');
131
- }
132
- }
133
- else {
134
- //console.log('[WorkflowService] No config provided, service unconfigured');
135
- }
136
- }
137
- // ==================== CONFIGURATION ====================
138
- /**
139
- * Update service configuration
140
- */
141
- updateConfig(config) {
142
- console.log('[WorkflowService] updateConfig', { env_type: config.env_type, workspace_id: config.workspace_id });
143
- this.config = config;
144
- this.workflowApiService = new workflowApi_service_1.WorkflowApiService(config.env_type);
145
- }
146
- /**
147
- * Get auth payload for API calls
148
- */
149
- getAuthPayload() {
150
- if (!this.config) {
151
- console.log('[WorkflowService] getAuthPayload failed: no config');
152
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
153
- }
154
- const hasAccessKey = !!this.config.access_key;
155
- console.log('[WorkflowService] getAuthPayload', { user_id: this.config.user_id, workspace_id: this.config.workspace_id, hasAccessKey });
156
- return Object.assign({ user_id: this.config.user_id, workspace_id: this.config.workspace_id, public_key: this.config.public_key, token: this.config.token }, (this.config.access_key && { access_key: this.config.access_key }));
157
- }
158
- /**
159
- * Ensure WorkflowApiService is initialized
160
- */
161
- ensureApiService() {
162
- if (!this.workflowApiService) {
163
- console.log('[WorkflowService] ensureApiService failed: WorkflowApiService not initialized');
164
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
165
- }
166
- return this.workflowApiService;
167
- }
168
- /**
169
- * Get service configuration
170
- */
171
- getConfig() {
172
- var _a;
173
- console.log('[WorkflowService] getConfig', { hasConfig: !!this.config, env_type: (_a = this.config) === null || _a === void 0 ? void 0 : _a.env_type });
174
- return this.config;
175
- }
176
- // ==================== PRODUCT BUILDER MANAGEMENT ====================
177
- /**
178
- * Create a new ProductBuilder instance
179
- */
180
- createNewProductBuilder() {
181
- if (!this.config) {
182
- console.log('[WorkflowService] createNewProductBuilder failed: no config');
183
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
184
- }
185
- console.log('[WorkflowService] createNewProductBuilder', { env_type: this.config.env_type, hasAccessKey: !!this.config.access_key });
186
- return new products_service_1.default({
187
- workspace_id: this.config.workspace_id,
188
- public_key: this.config.public_key,
189
- user_id: this.config.user_id,
190
- token: this.config.token,
191
- env_type: this.config.env_type,
192
- access_key: this.config.access_key,
193
- workspace_private_key: this._privateKey || undefined,
194
- });
195
- }
196
- /**
197
- * Get or create a ProductBuilder instance for the given product tag
198
- */
199
- async getProductBuilder(productTag) {
200
- let builder = this.productBuilders.get(productTag);
201
- if (!builder) {
202
- console.log('[WorkflowService] getProductBuilder creating new builder', { productTag });
203
- builder = this.createNewProductBuilder();
204
- await builder.initializeProductByTag(productTag);
205
- this.productBuilders.set(productTag, builder);
206
- // Update productId for logging
207
- this.productId = builder.fetchProductId() || '';
208
- console.log('[WorkflowService] getProductBuilder initialized', { productTag, productId: this.productId });
209
- }
210
- else {
211
- console.log('[WorkflowService] getProductBuilder cache hit', { productTag });
212
- }
213
- return builder;
214
- }
215
- /**
216
- * Initialize logging service
217
- */
218
- initializeLogService() {
219
- var _a;
220
- if (!this.logService && this.config) {
221
- console.log('[WorkflowService] initializeLogService', { productId: this.productId });
222
- this.logService = new logs_service_1.default({
223
- product_id: this.productId,
224
- workspace_id: this.config.workspace_id,
225
- public_key: this.config.public_key,
226
- user_id: this.config.user_id,
227
- token: this.config.token,
228
- env_type: this.config.env_type,
229
- workspace_private_key: (_a = this._privateKey) !== null && _a !== void 0 ? _a : undefined,
230
- });
231
- }
232
- }
233
- /**
234
- * Validate cache tag exists in product and return cache configuration
235
- */
236
- async validateCache(productTag, cacheTag) {
237
- const cacheKey = `${productTag}:${cacheTag}`;
238
- const cached = this.cacheConfigCache.get(cacheKey);
239
- const now = Date.now();
240
- const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
241
- console.log('[WorkflowService] validateCache', { productTag, cacheTag, cacheKey, hasCached: !!cached });
242
- // Return cached config if still valid
243
- if (cached && (now - cached.fetchedAt) < CACHE_TTL) {
244
- console.log('[WorkflowService] validateCache using cached config', { cacheKey, expiry: cached.expiry });
245
- return { expiry: cached.expiry };
246
- }
247
- // Fetch from API and cache the result
248
- const builder = await this.getProductBuilder(productTag);
249
- const cache = await builder.fetchCache(cacheTag);
250
- if (!cache) {
251
- console.log('[WorkflowService] validateCache cache config not found', { cacheTag });
252
- throw WorkflowError.validationError(`Cache configuration '${cacheTag}' does not exist`);
253
- }
254
- this.cacheConfigCache.set(cacheKey, { expiry: cache.expiry, fetchedAt: now });
255
- console.log('[WorkflowService] validateCache fetched and cached', { cacheKey, expiry: cache.expiry });
256
- return { expiry: cache.expiry };
257
- }
258
- /**
259
- * Create a new ProcessorService instance for job scheduling
260
- */
261
- createNewProcessor() {
262
- if (!this.config) {
263
- console.log('[WorkflowService] createNewProcessor failed: no config');
264
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
265
- }
266
- console.log('[WorkflowService] createNewProcessor', { env_type: this.config.env_type, hasAccessKey: !!this.config.access_key });
267
- return new processor_service_1.default({
268
- workspace_id: this.config.workspace_id,
269
- public_key: this.config.public_key,
270
- user_id: this.config.user_id,
271
- token: this.config.token,
272
- env_type: this.config.env_type,
273
- private_key: this._privateKey,
274
- access_key: this.config.access_key,
275
- });
276
- }
277
- // ==================== WORKFLOW CRUD OPERATIONS ====================
278
- /**
279
- * Create a new workflow from JSON schema
280
- *
281
- * @example
282
- * ```ts
283
- * await ductape.workflows.create('my-product', {
284
- * tag: 'order-fulfillment',
285
- * name: 'Order Fulfillment',
286
- * steps: [
287
- * { tag: 'validate', type: 'action', app: 'orders', event: 'validate', input: {} },
288
- * { tag: 'process', type: 'database_action', database: 'orders-db', event: 'create', input: {} },
289
- * ],
290
- * envs: [{ slug: 'prd' }],
291
- * });
292
- * ```
293
- */
294
- async create(productTag, workflowData) {
295
- var _a, _b, _c;
296
- console.log('[WorkflowService] create ENTRY', { productTag, tag: workflowData.tag, name: workflowData.name, stepsCount: (_b = (_a = workflowData.steps) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0 });
297
- // Validate required fields
298
- if (!workflowData.name || !workflowData.tag || !((_c = workflowData.steps) === null || _c === void 0 ? void 0 : _c.length)) {
299
- console.log('[WorkflowService] create validation failed: missing name, tag, or steps');
300
- throw WorkflowError.validationError('Workflow requires name, tag, and at least one step');
301
- }
302
- // Persist to backend using ProductBuilder
303
- const builder = await this.getProductBuilder(productTag);
304
- console.log('[WorkflowService] create calling builder.createWorkflow', { tag: workflowData.tag });
305
- await builder.createWorkflow(workflowData);
306
- // Store locally
307
- const localConfig = {
308
- name: workflowData.name,
309
- tag: workflowData.tag,
310
- description: workflowData.description,
311
- input: workflowData.input,
312
- output: workflowData.output,
313
- steps: workflowData.steps,
314
- signals: workflowData.signals,
315
- queries: workflowData.queries,
316
- options: workflowData.options,
317
- envs: workflowData.envs,
318
- };
319
- this.localConfigs.set(workflowData.tag, localConfig);
320
- console.log('[WorkflowService] create SUCCESS', { productTag, tag: workflowData.tag });
321
- }
322
- /**
323
- * Fetch all workflows for a product
324
- *
325
- * @example
326
- * ```ts
327
- * const workflows = await ductape.workflows.fetchAll('my-product');
328
- * workflows.forEach(wf => console.log(wf.name, wf.tag));
329
- * ```
330
- */
331
- async fetchAll(productTag) {
332
- var _a;
333
- console.log('[WorkflowService] fetchAll ENTRY', { productTag });
334
- // Return local configs if no product tag
335
- if (!productTag) {
336
- const localCount = this.localConfigs.size;
337
- console.log('[WorkflowService] fetchAll no productTag, returning local configs', { count: localCount });
338
- return Array.from(this.localConfigs.values());
339
- }
340
- // Fetch from API using ProductBuilder
341
- try {
342
- const builder = await this.getProductBuilder(productTag);
343
- console.log('[WorkflowService] fetchAll calling builder.fetchWorkflows', { productTag });
344
- const workflows = await builder.fetchWorkflows();
345
- // Convert IProductWorkflow[] to IWorkflowConfig[]
346
- const result = workflows.map((wf) => this.productWorkflowToConfig(wf));
347
- console.log('[WorkflowService] fetchAll SUCCESS', { productTag, count: result.length });
348
- return result;
349
- }
350
- catch (error) {
351
- // Fall back to local configs if API fails
352
- console.log('[WorkflowService] fetchAll API failed, falling back to local', { productTag, error: (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : error });
353
- return Array.from(this.localConfigs.values());
354
- }
355
- }
356
- /**
357
- * Fetch a specific workflow by tag
358
- *
359
- * @example
360
- * ```ts
361
- * const workflow = await ductape.workflows.fetch('order-fulfillment', 'my-product');
362
- * console.log(workflow?.name, workflow?.steps.length);
363
- * ```
364
- */
365
- async fetch(workflowTag, productTag) {
366
- var _a, _b;
367
- console.log('[WorkflowService] fetch ENTRY', { workflowTag, productTag });
368
- // If productTag is provided, fetch from API
369
- if (productTag) {
370
- try {
371
- const builder = await this.getProductBuilder(productTag);
372
- console.log('[WorkflowService] fetch calling builder.fetchWorkflow', { workflowTag, productTag });
373
- const workflow = await builder.fetchWorkflow(workflowTag);
374
- if (workflow) {
375
- const config = this.productWorkflowToConfig(workflow);
376
- // Update local cache
377
- this.localConfigs.set(workflowTag, config);
378
- console.log('[WorkflowService] fetch SUCCESS from API', { workflowTag, productTag, stepsCount: (_a = config.steps) === null || _a === void 0 ? void 0 : _a.length });
379
- return config;
380
- }
381
- console.log('[WorkflowService] fetch not found on API', { workflowTag, productTag });
382
- return null;
383
- }
384
- catch (error) {
385
- // Fall back to local config
386
- console.log('[WorkflowService] fetch API failed, trying local', { workflowTag, productTag, error: (_b = error === null || error === void 0 ? void 0 : error.message) !== null && _b !== void 0 ? _b : error });
387
- return this.localConfigs.get(workflowTag) || null;
388
- }
389
- }
390
- const local = this.localConfigs.get(workflowTag) || null;
391
- console.log('[WorkflowService] fetch from local only', { workflowTag, found: !!local });
392
- return local;
393
- }
394
- /**
395
- * Update a workflow
396
- *
397
- * @example
398
- * ```ts
399
- * await ductape.workflows.update('order-fulfillment', 'my-product', {
400
- * description: 'Updated description',
401
- * options: { timeout: 3600000 },
402
- * });
403
- * ```
404
- */
405
- async update(workflowTag, productTag, updates) {
406
- var _a, _b, _c, _d, _e, _f, _g;
407
- console.log('[WorkflowService] update ENTRY', { workflowTag, productTag, updateKeys: Object.keys(updates || {}) });
408
- // Update in backend
409
- const builder = await this.getProductBuilder(productTag);
410
- await builder.updateWorkflow(workflowTag, updates);
411
- // Update local cache
412
- const existing = this.localConfigs.get(workflowTag);
413
- if (existing) {
414
- const updated = Object.assign(Object.assign({}, existing), { name: updates.name || existing.name, description: (_a = updates.description) !== null && _a !== void 0 ? _a : existing.description, input: (_b = updates.input) !== null && _b !== void 0 ? _b : existing.input, output: (_c = updates.output) !== null && _c !== void 0 ? _c : existing.output, steps: updates.steps || existing.steps, signals: (_d = updates.signals) !== null && _d !== void 0 ? _d : existing.signals, queries: (_e = updates.queries) !== null && _e !== void 0 ? _e : existing.queries, options: (_f = updates.options) !== null && _f !== void 0 ? _f : existing.options, envs: (_g = updates.envs) !== null && _g !== void 0 ? _g : existing.envs });
415
- this.localConfigs.set(workflowTag, updated);
416
- }
417
- console.log('[WorkflowService] update SUCCESS', { workflowTag, productTag });
418
- }
419
- /**
420
- * Delete a workflow
421
- *
422
- * @example
423
- * ```ts
424
- * await ductape.workflows.delete('order-fulfillment', 'my-product');
425
- * ```
426
- */
427
- async delete(workflowTag, productTag) {
428
- console.log('[WorkflowService] delete ENTRY', { workflowTag, productTag });
429
- // Delete from backend
430
- const builder = await this.getProductBuilder(productTag);
431
- await builder.deleteWorkflow(workflowTag);
432
- // Remove from local cache
433
- this.localConfigs.delete(workflowTag);
434
- console.log('[WorkflowService] delete SUCCESS', { workflowTag, productTag });
435
- }
436
- // ==================== CODE-FIRST API ====================
437
- /**
438
- * Define a workflow using the code-first API
439
- * Compiles the handler to JSON schema and creates the workflow in one step
440
- *
441
- * @example
442
- * ```ts
443
- * const orderWorkflow = await ductape.workflows.define({
444
- * product: 'my-product',
445
- * tag: 'order-fulfillment',
446
- * name: 'Order Fulfillment',
447
- * handler: async (ctx) => {
448
- * const validation = await ctx.step('validate', async () => {
449
- * return ctx.action.run({
450
- * app: 'inventory-service',
451
- * event: 'validate-order',
452
- * input: { body: ctx.input },
453
- * });
454
- * });
455
- *
456
- * if (!validation.valid) {
457
- * return { success: false, error: validation.reason };
458
- * }
459
- *
460
- * return { success: true };
461
- * },
462
- * });
463
- * ```
464
- */
465
- async define(options) {
466
- var _a, _b;
467
- console.log('[WorkflowService] define ENTRY', { tag: options.tag, name: options.name, product: options.product });
468
- // Validate required fields
469
- if (!options.tag || !options.name || !options.handler) {
470
- console.log('[WorkflowService] define validation failed: missing tag, name, or handler');
471
- throw WorkflowError.validationError('Workflow definition requires tag, name, and handler');
472
- }
473
- // Create a workflow compiler instance
474
- const compiler = new WorkflowCompiler(options);
475
- // Compile the handler to JSON schema (await so async handler runs and steps are captured)
476
- console.log('[WorkflowService] define compiling handler (compileAsync)', { tag: options.tag });
477
- const schema = await compiler.compileAsync();
478
- console.log('[WorkflowService] define compiled schema', { tag: schema.tag, stepsCount: (_b = (_a = schema.steps) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0 });
479
- // If product is specified, create the workflow
480
- if (options.product) {
481
- console.log('[WorkflowService] define creating workflow on backend', { product: options.product, tag: schema.tag });
482
- await this.create(options.product, schema);
483
- }
484
- // Store locally
485
- const localConfig = {
486
- name: schema.name,
487
- tag: schema.tag,
488
- description: schema.description,
489
- input: schema.input,
490
- output: schema.output,
491
- steps: schema.steps,
492
- signals: schema.signals,
493
- queries: schema.queries,
494
- options: schema.options,
495
- envs: schema.envs,
496
- };
497
- this.localConfigs.set(schema.tag, localConfig);
498
- console.log('[WorkflowService] define SUCCESS', { tag: options.tag, product: options.product });
499
- // Return the defined workflow with compile method
500
- return {
501
- tag: options.tag,
502
- name: options.name,
503
- handler: options.handler,
504
- compile: () => schema,
505
- schema,
506
- };
507
- }
508
- // ==================== WORKFLOW EXECUTION ====================
509
- /**
510
- * Execute a workflow
511
- *
512
- * @example
513
- * ```ts
514
- * const result = await ductape.workflows.execute({
515
- * product: 'my-product',
516
- * env: 'production',
517
- * tag: 'order-fulfillment',
518
- * input: {
519
- * order_id: 'ORD-12345',
520
- * items: [{ product_id: 'PROD-1', quantity: 2 }],
521
- * },
522
- * });
523
- *
524
- * console.log(result.status); // 'completed' | 'failed' | 'rolled_back'
525
- * console.log(result.output);
526
- * ```
527
- */
528
- async execute(options) {
529
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
530
- console.log('[WorkflowService] execute ENTRY', { product: options.product, env: options.env, tag: options.tag, hasSession: !!options.session, cache: options.cache });
531
- if (!this.config) {
532
- console.log('[WorkflowService] execute failed: no config');
533
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
534
- }
535
- const process_id = (0, processor_utils_1.generateObjectId)();
536
- console.log('[WorkflowService] execute process_id', { process_id });
537
- // Session log fields (will be populated if session is provided)
538
- let sessionLogFields = {};
539
- let resolvedOptions = options;
540
- // Prefer locally cached workflow (from a recent define()) so step conditions and full schema are preserved
541
- const builder = await this.getProductBuilder(options.product);
542
- console.log('[WorkflowService] execute fetching workflow', { tag: options.tag, product: options.product });
543
- const localConfig = this.localConfigs.get(options.tag);
544
- let workflow = localConfig
545
- ? Object.assign(Object.assign({}, localConfig), { tag: localConfig.tag, name: localConfig.name, steps: localConfig.steps }) : null;
546
- if (workflow) {
547
- console.log('[WorkflowService] execute using local workflow config', { tag: options.tag });
548
- }
549
- if (!workflow) {
550
- workflow = await builder.fetchWorkflow(options.tag);
551
- }
552
- if (!workflow) {
553
- console.log('[WorkflowService] execute workflow not found', { tag: options.tag });
554
- throw WorkflowError.notFoundError(`Workflow ${options.tag} not found`);
555
- }
556
- console.log('[WorkflowService] execute workflow loaded', { tag: workflow.tag, stepsCount: (_b = (_a = workflow.steps) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0 });
557
- // Process session if provided - verify and resolve $Session{} references
558
- if (options.session) {
559
- const privateKey = builder.fetchPrivateKey();
560
- if (privateKey) {
561
- const { processSessionForExecution } = await Promise.resolve().then(() => __importStar(require('../sessions')));
562
- const sessionResult = await processSessionForExecution(options.session, privateKey, options, options.env, {
563
- fetchSessionSelector: async (sessionTag) => {
564
- const sessionConfig = await builder.fetchSession(sessionTag);
565
- return sessionConfig === null || sessionConfig === void 0 ? void 0 : sessionConfig.selector;
566
- },
567
- });
568
- if (sessionResult.error) {
569
- console.log('[WorkflowService] execute session validation failed', { error: sessionResult.error });
570
- throw WorkflowError.executionError(`Session validation failed: ${sessionResult.error}`);
571
- }
572
- resolvedOptions = sessionResult.input;
573
- sessionLogFields = sessionResult.logFields;
574
- console.log('[WorkflowService] execute session resolved', { hasLogFields: Object.keys(sessionLogFields).length > 0 });
575
- }
576
- }
577
- // Initialize logging
578
- this.initializeLogService();
579
- const baseLogs = Object.assign({ product_tag: options.product, workspace_id: this.config.workspace_id, env: options.env, process_id, type: logs_types_1.LogEventTypes.WORKFLOW, parent_tag: options.tag, data: { workflow: options.tag, operation: 'execute' } }, sessionLogFields);
580
- (_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow execute - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
581
- const { cache } = options;
582
- try {
583
- // Check cache for idempotency (prevent duplicate executions with same input)
584
- if (cache && this.cacheManager && this._privateKey) {
585
- console.log('[WorkflowService] execute checking cache', { cache, tag: options.tag });
586
- const cacheConfig = await this.validateCache(options.product, cache);
587
- const cacheOptions = {
588
- cache_tag: cache,
589
- product_tag: options.product,
590
- component_tag: options.tag,
591
- component_type: 'workflow',
592
- operation: 'execute',
593
- input: { tag: options.tag, input: resolvedOptions.input },
594
- privateKey: this._privateKey,
595
- expiry: cacheConfig.expiry,
596
- };
597
- const cached = await this.cacheManager.fetch(cacheOptions);
598
- if (cached.hit && cached.data) {
599
- console.log('[WorkflowService] execute cache HIT', { cache, source: cached.source });
600
- (_d = this.logService) === null || _d === void 0 ? void 0 : _d.add(Object.assign(Object.assign({}, baseLogs), { message: `Workflow execute - cache hit (${cached.source})`, successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS, data: { workflow: options.tag, operation: 'execute', cache_source: cached.source }, cache_tag: cache, cache_key: cached.key, cache_status: true }));
601
- (_e = this.logService) === null || _e === void 0 ? void 0 : _e.publish();
602
- return cached.data;
603
- }
604
- }
605
- // Create and run the workflow executor with resolved options and session context (pass builder to avoid duplicate init)
606
- console.log('[WorkflowService] execute creating WorkflowExecutor and running', { tag: options.tag });
607
- const executor = new workflow_executor_1.WorkflowExecutor(this.config, workflow, resolvedOptions, this._privateKey, sessionLogFields, builder);
608
- const result = await executor.execute();
609
- console.log('[WorkflowService] execute executor completed', { tag: options.tag, status: result === null || result === void 0 ? void 0 : result.status });
610
- // Store in cache for idempotency (fire-and-forget)
611
- if (cache && this.cacheManager && this._privateKey) {
612
- const cacheConfig = await this.validateCache(options.product, cache);
613
- this.cacheManager.store({
614
- cache_tag: cache,
615
- product_tag: options.product,
616
- component_tag: options.tag,
617
- component_type: 'workflow',
618
- operation: 'execute',
619
- input: { tag: options.tag, input: resolvedOptions.input },
620
- privateKey: this._privateKey,
621
- expiry: cacheConfig.expiry,
622
- }, result);
623
- }
624
- (_f = this.logService) === null || _f === void 0 ? void 0 : _f.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow execute - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
625
- (_g = this.logService) === null || _g === void 0 ? void 0 : _g.publish();
626
- console.log('[WorkflowService] execute SUCCESS', { tag: options.tag, process_id });
627
- return result;
628
- }
629
- catch (error) {
630
- console.log('[WorkflowService] execute FAILED', { tag: options.tag, process_id, error: (_h = error === null || error === void 0 ? void 0 : error.message) !== null && _h !== void 0 ? _h : error });
631
- (_j = this.logService) === null || _j === void 0 ? void 0 : _j.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow execute - failed', failed_execution: true, data: { workflow: options.tag, operation: 'execute', error: error.message || String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
632
- await ((_k = this.logService) === null || _k === void 0 ? void 0 : _k.publish());
633
- throw error;
634
- }
635
- }
636
- // ==================== WORKFLOW DISPATCH ====================
637
- /**
638
- * Dispatch a workflow to run as a scheduled job
639
- *
640
- * @example
641
- * ```ts
642
- * // Schedule a workflow to run in 1 hour
643
- * const result = await ductape.workflows.dispatch({
644
- * product: 'my-product',
645
- * env: 'production',
646
- * workflow: 'order-fulfillment',
647
- * input: { order_id: 'ORD-123' },
648
- * schedule: { start_at: Date.now() + 3600000 },
649
- * });
650
- *
651
- * // Run on a cron schedule
652
- * const result = await ductape.workflows.dispatch({
653
- * product: 'my-product',
654
- * env: 'production',
655
- * workflow: 'daily-report',
656
- * input: {},
657
- * schedule: { cron: '0 0 * * *' }, // Daily at midnight
658
- * });
659
- * ```
660
- */
661
- async dispatch(data) {
662
- var _a, _b, _c, _d, _e, _f, _g, _h;
663
- console.log('[WorkflowService] dispatch ENTRY', { product: data.product, env: data.env, workflow: data.workflow, schedule: !!data.schedule, session: !!data.session, cache: data.cache });
664
- const process_id = (0, processor_utils_1.generateObjectId)();
665
- const processorService = this.createNewProcessor();
666
- const productBuilder = await this.getProductBuilder(data.product);
667
- const schedule = data.schedule || {};
668
- const startAt = typeof schedule.start_at === 'string' ? new Date(schedule.start_at).getTime() : schedule.start_at || Date.now();
669
- // Generate job tag based on workflow
670
- const jobTag = `workflow:${data.workflow}`;
671
- console.log('[WorkflowService] dispatch jobTag', { jobTag, startAt, cron: schedule.cron, every: schedule.every });
672
- // Session log fields (will be populated if session is provided)
673
- let sessionLogFields = {};
674
- let resolvedData = data;
675
- // Process session if provided - verify and resolve $Session{} references
676
- if (data.session) {
677
- const privateKey = productBuilder.fetchPrivateKey();
678
- if (privateKey) {
679
- const { processSessionForExecution } = await Promise.resolve().then(() => __importStar(require('../sessions')));
680
- const sessionResult = await processSessionForExecution(data.session, privateKey, data, data.env, {
681
- fetchSessionSelector: async (sessionTag) => {
682
- const sessionConfig = await productBuilder.fetchSession(sessionTag);
683
- return sessionConfig === null || sessionConfig === void 0 ? void 0 : sessionConfig.selector;
684
- },
685
- });
686
- if (sessionResult.error) {
687
- console.log('[WorkflowService] dispatch session validation failed', { error: sessionResult.error });
688
- throw WorkflowError.executionError(`Session validation failed: ${sessionResult.error}`);
689
- }
690
- resolvedData = sessionResult.input;
691
- sessionLogFields = sessionResult.logFields;
692
- console.log('[WorkflowService] dispatch session resolved');
693
- }
694
- }
695
- // Initialize logging
696
- this.initializeLogService();
697
- const baseLogs = Object.assign({ product_tag: data.product, workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '', env: data.env, process_id, type: logs_types_1.LogEventTypes.WORKFLOW, parent_tag: data.workflow, data: { workflow: data.workflow, operation: 'dispatch' } }, sessionLogFields);
698
- (_b = this.logService) === null || _b === void 0 ? void 0 : _b.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow dispatch - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
699
- const { cache } = data;
700
- try {
701
- // Check cache for idempotency (prevent duplicate dispatches with same input)
702
- if (cache && this.cacheManager && this._privateKey) {
703
- console.log('[WorkflowService] dispatch checking cache', { cache, workflow: data.workflow });
704
- const cacheConfig = await this.validateCache(data.product, cache);
705
- const cacheOptions = {
706
- cache_tag: cache,
707
- product_tag: data.product,
708
- component_tag: data.workflow,
709
- component_type: 'workflow',
710
- operation: 'dispatch',
711
- input: { workflow: data.workflow, input: data.input, schedule: data.schedule },
712
- privateKey: this._privateKey,
713
- expiry: cacheConfig.expiry,
714
- };
715
- const cached = await this.cacheManager.fetch(cacheOptions);
716
- if (cached.hit && cached.data) {
717
- console.log('[WorkflowService] dispatch cache HIT', { cache, source: cached.source });
718
- (_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign(Object.assign({}, baseLogs), { message: `Workflow dispatch - cache hit (${cached.source})`, successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS, data: { workflow: data.workflow, operation: 'dispatch', cache_source: cached.source }, cache_tag: cache, cache_key: cached.key, cache_status: true }));
719
- (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
720
- return cached.data;
721
- }
722
- }
723
- // Check if job exists, if not create it
724
- console.log('[WorkflowService] dispatch fetching existing job', { jobTag });
725
- const existingJob = await productBuilder.fetchJob(jobTag);
726
- if (!existingJob) {
727
- console.log('[WorkflowService] dispatch job not found, creating', { jobTag });
728
- await productBuilder.createJob({
729
- tag: jobTag,
730
- name: `Workflow: ${data.workflow}`,
731
- description: `Auto-created job for workflow ${data.workflow}`,
732
- type: productsBuilder_types_1.JobEventTypes.WORKFLOW, // Use workflow job type
733
- app: data.workflow,
734
- event: 'execute',
735
- executions: 0,
736
- intervals: schedule.every || 0,
737
- start_at: startAt,
738
- });
739
- }
740
- const jobInput = {
741
- product: data.product,
742
- env: data.env,
743
- event: jobTag,
744
- input: resolvedData.input,
745
- retries: data.retries || 0,
746
- start_at: startAt,
747
- session: data.session,
748
- cache: data.cache,
749
- repeat: schedule.cron || schedule.every
750
- ? {
751
- cron: schedule.cron,
752
- every: schedule.every,
753
- limit: schedule.limit,
754
- endDate: schedule.endDate,
755
- tz: schedule.tz,
756
- }
757
- : undefined,
758
- };
759
- console.log('[WorkflowService] dispatch calling processJob', { jobTag, hasRepeat: !!(schedule.cron || schedule.every) });
760
- await processorService.processJob(jobInput);
761
- const isRecurring = !!(schedule.cron || schedule.every);
762
- console.log('[WorkflowService] dispatch processJob completed', { isRecurring });
763
- let nextRunAt;
764
- if (isRecurring && schedule.every) {
765
- nextRunAt = startAt + schedule.every;
766
- }
767
- const job_id = (0, crypto_1.randomUUID)();
768
- const result = {
769
- job_id,
770
- status: startAt > Date.now() ? 'scheduled' : 'queued',
771
- scheduled_at: startAt,
772
- recurring: isRecurring,
773
- next_run_at: nextRunAt,
774
- };
775
- // Store in cache for idempotency (fire-and-forget)
776
- if (cache && this.cacheManager && this._privateKey) {
777
- const cacheConfig = await this.validateCache(data.product, cache);
778
- this.cacheManager.store({
779
- cache_tag: cache,
780
- product_tag: data.product,
781
- component_tag: data.workflow,
782
- component_type: 'workflow',
783
- operation: 'dispatch',
784
- input: { workflow: data.workflow, input: data.input, schedule: data.schedule },
785
- privateKey: this._privateKey,
786
- expiry: cacheConfig.expiry,
787
- }, result);
788
- }
789
- (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow dispatch - success', successful_execution: true, data: { workflow: data.workflow, operation: 'dispatch', job_id }, status: logs_types_1.LogEventStatus.SUCCESS }));
790
- (_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish();
791
- console.log('[WorkflowService] dispatch SUCCESS', { workflow: data.workflow, job_id: result.job_id, status: result.status });
792
- return result;
793
- }
794
- catch (error) {
795
- console.log('[WorkflowService] dispatch FAILED', { workflow: data.workflow, error: String(error) });
796
- (_g = this.logService) === null || _g === void 0 ? void 0 : _g.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow dispatch - failed', failed_execution: true, data: { workflow: data.workflow, operation: 'dispatch', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
797
- await ((_h = this.logService) === null || _h === void 0 ? void 0 : _h.publish());
798
- throw error;
799
- }
800
- }
801
- // ==================== SIGNAL & QUERY ====================
802
- /**
803
- * Send a signal to a running workflow
804
- *
805
- * @example
806
- * ```ts
807
- * await ductape.workflows.signal({
808
- * product: 'my-product',
809
- * env: 'production',
810
- * workflow_id: 'wf-123',
811
- * signal: 'approve',
812
- * payload: { approver_id: 'user-456', comments: 'Approved' },
813
- * });
814
- * ```
815
- */
816
- async signal(options) {
817
- var _a, _b, _c, _d, _e, _f;
818
- console.log('[WorkflowService] signal ENTRY', { workflow_id: options.workflow_id, signal: options.signal, product: options.product, env: options.env });
819
- const process_id = (0, processor_utils_1.generateObjectId)();
820
- // Initialize logging
821
- if (options.product) {
822
- await this.getProductBuilder(options.product);
823
- }
824
- this.initializeLogService();
825
- const baseLogs = {
826
- product_tag: options.product,
827
- workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '',
828
- env: options.env,
829
- process_id,
830
- type: logs_types_1.LogEventTypes.WORKFLOW,
831
- parent_tag: options.workflow_id,
832
- child_tag: options.signal,
833
- data: { workflow_id: options.workflow_id, signal: options.signal, operation: 'signal' },
834
- };
835
- (_b = this.logService) === null || _b === void 0 ? void 0 : _b.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow signal - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
836
- try {
837
- const apiService = this.ensureApiService();
838
- const auth = this.getAuthPayload();
839
- console.log('[WorkflowService] signal calling apiService.sendSignal', { workflow_id: options.workflow_id, signal: options.signal });
840
- await apiService.sendSignal(options.workflow_id, {
841
- product: options.product,
842
- env: options.env,
843
- signal: options.signal,
844
- payload: options.payload,
845
- }, auth);
846
- console.log('[WorkflowService] signal SUCCESS', { workflow_id: options.workflow_id, signal: options.signal });
847
- (_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow signal - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
848
- (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
849
- }
850
- catch (error) {
851
- console.log('[WorkflowService] signal FAILED', { workflow_id: options.workflow_id, signal: options.signal, error: String(error) });
852
- (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow signal - failed', failed_execution: true, data: { workflow_id: options.workflow_id, signal: options.signal, operation: 'signal', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
853
- await ((_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish());
854
- throw error;
855
- }
856
- }
857
- /**
858
- * Query a running workflow
859
- *
860
- * @example
861
- * ```ts
862
- * const status = await ductape.workflows.query({
863
- * product: 'my-product',
864
- * env: 'production',
865
- * workflow_id: 'wf-123',
866
- * query: 'getStatus',
867
- * });
868
- *
869
- * console.log(status.current_step, status.progress);
870
- * ```
871
- */
872
- async query(options) {
873
- console.log('[WorkflowService] query ENTRY', { workflow_id: options.workflow_id, query: options.query, product: options.product, env: options.env });
874
- // Query is handled by getting workflow status and extracting query result
875
- const status = await this.status({
876
- product: options.product,
877
- env: options.env,
878
- workflow_id: options.workflow_id,
879
- });
880
- if (!status) {
881
- console.log('[WorkflowService] query workflow not found', { workflow_id: options.workflow_id });
882
- throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
883
- }
884
- const result = (status.state[options.query] || status);
885
- console.log('[WorkflowService] query SUCCESS', { workflow_id: options.workflow_id, query: options.query, hasResult: result !== undefined });
886
- // Return the state which contains query results
887
- return result;
888
- }
889
- // ==================== REPLAY, RESTART & RESUME ====================
890
- /**
891
- * Replay a workflow with the same input
892
- *
893
- * @example
894
- * ```ts
895
- * const result = await ductape.workflows.replay({
896
- * product: 'my-product',
897
- * env: 'production',
898
- * workflow_id: 'wf-123',
899
- * reason: 'Debugging payment failure',
900
- * });
901
- * ```
902
- */
903
- async replay(options) {
904
- var _a, _b, _c, _d, _e, _f;
905
- console.log('[WorkflowService] replay ENTRY', { workflow_id: options.workflow_id, product: options.product, env: options.env });
906
- const process_id = (0, processor_utils_1.generateObjectId)();
907
- if (!this.config) {
908
- console.log('[WorkflowService] replay failed: no config');
909
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
910
- }
911
- // Initialize logging
912
- await this.getProductBuilder(options.product);
913
- this.initializeLogService();
914
- const baseLogs = {
915
- product_tag: options.product,
916
- workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '',
917
- env: options.env,
918
- process_id,
919
- type: logs_types_1.LogEventTypes.WORKFLOW,
920
- parent_tag: options.workflow_id,
921
- data: { workflow_id: options.workflow_id, operation: 'replay' },
922
- };
923
- (_b = this.logService) === null || _b === void 0 ? void 0 : _b.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow replay - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
924
- try {
925
- // Get original workflow execution state from backend
926
- console.log('[WorkflowService] replay fetching original status', { workflow_id: options.workflow_id });
927
- const originalStatus = await this.status({
928
- product: options.product,
929
- env: options.env,
930
- workflow_id: options.workflow_id,
931
- });
932
- if (!originalStatus) {
933
- console.log('[WorkflowService] replay original workflow not found', { workflow_id: options.workflow_id });
934
- throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
935
- }
936
- console.log('[WorkflowService] replay original status', { workflow_tag: originalStatus.workflow_tag, status: originalStatus.status });
937
- // Execute with the same input
938
- console.log('[WorkflowService] replay executing with same input', { tag: originalStatus.workflow_tag });
939
- const result = await this.execute({
940
- product: options.product,
941
- env: options.env,
942
- tag: originalStatus.workflow_tag,
943
- input: originalStatus.input || {},
944
- idempotency_key: options.idempotency_key,
945
- });
946
- (_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow replay - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
947
- (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
948
- console.log('[WorkflowService] replay SUCCESS', { workflow_id: options.workflow_id, replayed_from: options.workflow_id });
949
- return Object.assign(Object.assign({}, result), { replayed_from: options.workflow_id });
950
- }
951
- catch (error) {
952
- console.log('[WorkflowService] replay FAILED', { workflow_id: options.workflow_id, error: String(error) });
953
- (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow replay - failed', failed_execution: true, data: { workflow_id: options.workflow_id, operation: 'replay', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
954
- await ((_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish());
955
- throw error;
956
- }
957
- }
958
- /**
959
- * Restart a workflow with new or modified input
960
- *
961
- * @example
962
- * ```ts
963
- * const result = await ductape.workflows.restart({
964
- * product: 'my-product',
965
- * env: 'production',
966
- * workflow_id: 'wf-123',
967
- * input: { email: 'corrected@email.com' },
968
- * reason: 'Customer email was incorrect',
969
- * });
970
- * ```
971
- */
972
- async restart(options) {
973
- console.log('[WorkflowService] restart ENTRY', { workflow_id: options.workflow_id, product: options.product, env: options.env, hasInput: !!options.input });
974
- if (!this.config) {
975
- console.log('[WorkflowService] restart failed: no config');
976
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
977
- }
978
- // Get original workflow execution state from backend
979
- const originalStatus = await this.status({
980
- product: options.product,
981
- env: options.env,
982
- workflow_id: options.workflow_id,
983
- });
984
- if (!originalStatus) {
985
- console.log('[WorkflowService] restart workflow not found', { workflow_id: options.workflow_id });
986
- throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
987
- }
988
- console.log('[WorkflowService] restart original status', { workflow_tag: originalStatus.workflow_tag });
989
- // Determine the new input
990
- let newInput;
991
- if (options.input) {
992
- newInput = options.input;
993
- }
994
- else if (options.input_override && options.merge_input) {
995
- newInput = Object.assign(Object.assign({}, (originalStatus.input || {})), options.input_override);
996
- }
997
- else if (options.input_override) {
998
- newInput = options.input_override;
999
- }
1000
- else {
1001
- newInput = originalStatus.input || {};
1002
- }
1003
- // Execute with the new input
1004
- console.log('[WorkflowService] restart executing with new input', { tag: originalStatus.workflow_tag, inputKeys: Object.keys(newInput || {}) });
1005
- const result = await this.execute({
1006
- product: options.product,
1007
- env: options.env,
1008
- tag: originalStatus.workflow_tag,
1009
- input: newInput,
1010
- });
1011
- console.log('[WorkflowService] restart SUCCESS', { workflow_id: options.workflow_id, restarted_from: options.workflow_id });
1012
- return Object.assign(Object.assign({}, result), { restarted_from: options.workflow_id });
1013
- }
1014
- /**
1015
- * Resume a paused or failed workflow from where it stopped
1016
- *
1017
- * @example
1018
- * ```ts
1019
- * const result = await ductape.workflows.resume({
1020
- * product: 'my-product',
1021
- * env: 'production',
1022
- * workflow_id: 'wf-123',
1023
- * from_checkpoint: 'payment-complete',
1024
- * });
1025
- * ```
1026
- */
1027
- async resume(options) {
1028
- var _a, _b;
1029
- console.log('[WorkflowService] resume ENTRY', { workflow_id: options.workflow_id, product: options.product, env: options.env, from_checkpoint: options.from_checkpoint, from_step: options.from_step });
1030
- if (!this.config) {
1031
- console.log('[WorkflowService] resume failed: no config');
1032
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
1033
- }
1034
- // Get original workflow execution state from backend
1035
- const originalStatus = await this.status({
1036
- product: options.product,
1037
- env: options.env,
1038
- workflow_id: options.workflow_id,
1039
- });
1040
- if (!originalStatus) {
1041
- console.log('[WorkflowService] resume workflow not found', { workflow_id: options.workflow_id });
1042
- throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
1043
- }
1044
- console.log('[WorkflowService] resume original status', { workflow_tag: originalStatus.workflow_tag, completed_steps: (_b = (_a = originalStatus.completed_steps) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0 });
1045
- // Fetch the workflow configuration
1046
- const builder = await this.getProductBuilder(options.product);
1047
- const workflow = await builder.fetchWorkflow(originalStatus.workflow_tag);
1048
- if (!workflow) {
1049
- console.log('[WorkflowService] resume workflow config not found', { tag: originalStatus.workflow_tag });
1050
- throw WorkflowError.notFoundError(`Workflow ${originalStatus.workflow_tag} not found`);
1051
- }
1052
- // Create executor with resume options
1053
- console.log('[WorkflowService] resume creating executor and resuming', { tag: workflow.tag });
1054
- const executor = new workflow_executor_1.WorkflowExecutor(this.config, workflow, {
1055
- product: options.product,
1056
- env: options.env,
1057
- tag: originalStatus.workflow_tag,
1058
- input: Object.assign(Object.assign({}, (originalStatus.input || {})), (options.input || {})),
1059
- }, this._privateKey);
1060
- // Resume execution (executor handles skipping completed steps)
1061
- const result = await executor.resume({
1062
- completed_steps: originalStatus.completed_steps,
1063
- state: originalStatus.state,
1064
- from_checkpoint: options.from_checkpoint,
1065
- from_step: options.from_step,
1066
- skip_steps: options.skip_steps,
1067
- });
1068
- console.log('[WorkflowService] resume SUCCESS', { workflow_id: options.workflow_id, resumed_from: options.workflow_id });
1069
- return Object.assign(Object.assign({}, result), { resumed_from: options.workflow_id, resumed_checkpoint: options.from_checkpoint });
1070
- }
1071
- /**
1072
- * Replay a workflow starting from a specific step
1073
- *
1074
- * @example
1075
- * ```ts
1076
- * const result = await ductape.workflows.replayFromStep({
1077
- * product: 'my-product',
1078
- * env: 'production',
1079
- * workflow_id: 'wf-123',
1080
- * from_step: 'process-payment',
1081
- * });
1082
- * ```
1083
- */
1084
- async replayFromStep(options) {
1085
- console.log('[WorkflowService] replayFromStep ENTRY', { workflow_id: options.workflow_id, from_step: options.from_step, product: options.product, env: options.env });
1086
- if (!this.config) {
1087
- console.log('[WorkflowService] replayFromStep failed: no config');
1088
- throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
1089
- }
1090
- // Get original workflow execution state
1091
- const originalStatus = await this.status({
1092
- product: options.product,
1093
- env: options.env,
1094
- workflow_id: options.workflow_id,
1095
- });
1096
- if (!originalStatus) {
1097
- console.log('[WorkflowService] replayFromStep workflow not found', { workflow_id: options.workflow_id });
1098
- throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
1099
- }
1100
- // Fetch the workflow configuration
1101
- const builder = await this.getProductBuilder(options.product);
1102
- const workflow = await builder.fetchWorkflow(originalStatus.workflow_tag);
1103
- if (!workflow) {
1104
- console.log('[WorkflowService] replayFromStep workflow config not found', { tag: originalStatus.workflow_tag });
1105
- throw WorkflowError.notFoundError(`Workflow ${originalStatus.workflow_tag} not found`);
1106
- }
1107
- // Find steps before from_step to mark as completed
1108
- const stepIndex = workflow.steps.findIndex((s) => s.tag === options.from_step);
1109
- if (stepIndex === -1) {
1110
- console.log('[WorkflowService] replayFromStep step not found', { from_step: options.from_step });
1111
- throw WorkflowError.validationError(`Step ${options.from_step} not found in workflow`);
1112
- }
1113
- const completedSteps = workflow.steps.slice(0, stepIndex).map((s) => s.tag);
1114
- console.log('[WorkflowService] replayFromStep stepIndex and completedSteps', { from_step: options.from_step, stepIndex, completedStepsCount: completedSteps.length });
1115
- // Create executor with partial state
1116
- const executor = new workflow_executor_1.WorkflowExecutor(this.config, workflow, {
1117
- product: options.product,
1118
- env: options.env,
1119
- tag: originalStatus.workflow_tag,
1120
- input: originalStatus.input || {},
1121
- }, this._privateKey);
1122
- // Resume from the specified step with overridden outputs
1123
- const result = await executor.resume({
1124
- completed_steps: completedSteps,
1125
- state: originalStatus.state,
1126
- step_outputs: options.step_outputs,
1127
- });
1128
- console.log('[WorkflowService] replayFromStep SUCCESS', { workflow_id: options.workflow_id, from_step: options.from_step });
1129
- return Object.assign(Object.assign({}, result), { replayed_from: options.workflow_id });
1130
- }
1131
- // ==================== STATUS & MANAGEMENT ====================
1132
- /**
1133
- * Get the status of a workflow execution
1134
- *
1135
- * @example
1136
- * ```ts
1137
- * const status = await ductape.workflows.status({
1138
- * product: 'my-product',
1139
- * env: 'production',
1140
- * workflow_id: 'wf-123',
1141
- * });
1142
- * ```
1143
- */
1144
- async status(options) {
1145
- console.log('[WorkflowService] status ENTRY', { workflow_id: options.workflow_id, product: options.product, env: options.env });
1146
- const apiService = this.ensureApiService();
1147
- const auth = this.getAuthPayload();
1148
- const response = await apiService.getStatus(options.workflow_id, options.product, options.env, auth);
1149
- if (!response) {
1150
- console.log('[WorkflowService] status not found', { workflow_id: options.workflow_id });
1151
- return null;
1152
- }
1153
- console.log('[WorkflowService] status SUCCESS', { workflow_id: response.workflow_id, workflow_tag: response.workflow_tag, status: response.status });
1154
- return {
1155
- workflow_id: response.workflow_id,
1156
- workflow_tag: response.workflow_tag,
1157
- status: response.status,
1158
- current_step: response.current_step,
1159
- completed_steps: response.completed_steps,
1160
- state: response.state,
1161
- started_at: response.started_at,
1162
- updated_at: response.updated_at,
1163
- input: response.input,
1164
- output: response.output,
1165
- error: response.error,
1166
- };
1167
- }
1168
- /**
1169
- * Cancel a running workflow
1170
- *
1171
- * @example
1172
- * ```ts
1173
- * const result = await ductape.workflows.cancel({
1174
- * product: 'my-product',
1175
- * env: 'production',
1176
- * workflow_id: 'wf-123',
1177
- * reason: 'User requested cancellation',
1178
- * });
1179
- * ```
1180
- */
1181
- async cancel(options) {
1182
- var _a, _b, _c, _d;
1183
- console.log('[WorkflowService] cancel ENTRY', {
1184
- workflow_id: options.workflow_id,
1185
- product: options.product,
1186
- env: options.env,
1187
- reason: options.reason,
1188
- });
1189
- const apiService = this.ensureApiService();
1190
- const auth = this.getAuthPayload();
1191
- const response = await apiService.cancel(options.workflow_id, options.product, options.env, options.reason || 'Cancelled by user', auth);
1192
- console.log('[WorkflowService] cancel SUCCESS', {
1193
- workflow_id: options.workflow_id,
1194
- cancelled: response.cancelled,
1195
- rolled_back_count: (_b = (_a = response.rolled_back_steps) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
1196
- failed_rollbacks_count: (_d = (_c = response.failed_rollbacks) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0,
1197
- });
1198
- return {
1199
- cancelled: response.cancelled,
1200
- rolled_back_steps: response.rolled_back_steps,
1201
- failed_rollbacks: response.failed_rollbacks,
1202
- };
1203
- }
1204
- /**
1205
- * Get the execution history of a workflow
1206
- *
1207
- * @example
1208
- * ```ts
1209
- * const history = await ductape.workflows.history({
1210
- * product: 'my-product',
1211
- * env: 'production',
1212
- * workflow_id: 'wf-123',
1213
- * });
1214
- * ```
1215
- */
1216
- async history(options) {
1217
- var _a, _b, _c, _d;
1218
- console.log('[WorkflowService] history ENTRY', { workflow_id: options.workflow_id, product: options.product, env: options.env });
1219
- const apiService = this.ensureApiService();
1220
- const auth = this.getAuthPayload();
1221
- const response = await apiService.getHistory(options.workflow_id, options.product, options.env, auth);
1222
- console.log('[WorkflowService] history SUCCESS', { workflow_id: response.workflow_id, eventsCount: (_b = (_a = response.events) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, checkpointsCount: (_d = (_c = response.checkpoints) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0 });
1223
- return {
1224
- workflow_id: response.workflow_id,
1225
- workflow_tag: response.workflow_tag,
1226
- status: response.status,
1227
- events: response.events.map((e) => ({
1228
- type: e.type,
1229
- timestamp: e.timestamp,
1230
- data: e.data,
1231
- })),
1232
- checkpoints: response.checkpoints,
1233
- replays: response.replays,
1234
- restarts: response.restarts,
1235
- };
1236
- }
1237
- /**
1238
- * Get detailed information about a specific step
1239
- *
1240
- * @example
1241
- * ```ts
1242
- * const detail = await ductape.workflows.stepDetail({
1243
- * product: 'my-product',
1244
- * env: 'production',
1245
- * workflow_id: 'wf-123',
1246
- * step_tag: 'process-payment',
1247
- * });
1248
- * ```
1249
- */
1250
- async stepDetail(options) {
1251
- console.log('[WorkflowService] stepDetail ENTRY', { workflow_id: options.workflow_id, step_tag: options.step_tag, product: options.product, env: options.env });
1252
- const apiService = this.ensureApiService();
1253
- const auth = this.getAuthPayload();
1254
- const response = await apiService.getStepDetail(options.workflow_id, options.step_tag, options.product, options.env, auth);
1255
- if (!response) {
1256
- console.log('[WorkflowService] stepDetail not found', { workflow_id: options.workflow_id, step_tag: options.step_tag });
1257
- return null;
1258
- }
1259
- console.log('[WorkflowService] stepDetail SUCCESS', { workflow_id: options.workflow_id, step_tag: response.tag, status: response.status });
1260
- return {
1261
- tag: response.tag,
1262
- name: response.name,
1263
- status: response.status,
1264
- input: response.input,
1265
- output: response.output,
1266
- error: response.error,
1267
- attempts: response.attempts,
1268
- start_time: response.start_time,
1269
- end_time: response.end_time,
1270
- duration: response.duration,
1271
- rollback_status: response.rollback_status,
1272
- rollback_error: response.rollback_error,
1273
- };
1274
- }
1275
- /**
1276
- * List all related executions (replays, restarts, resumes)
1277
- *
1278
- * @example
1279
- * ```ts
1280
- * const related = await ductape.workflows.relatedExecutions({
1281
- * product: 'my-product',
1282
- * env: 'production',
1283
- * workflow_id: 'wf-123',
1284
- * });
1285
- * ```
1286
- */
1287
- async relatedExecutions(options) {
1288
- var _a, _b;
1289
- console.log('[WorkflowService] relatedExecutions ENTRY', { workflow_id: options.workflow_id, product: options.product, env: options.env });
1290
- const apiService = this.ensureApiService();
1291
- const auth = this.getAuthPayload();
1292
- const response = await apiService.getRelatedExecutions(options.workflow_id, options.product, options.env, auth);
1293
- console.log('[WorkflowService] relatedExecutions SUCCESS', { workflow_id: options.workflow_id, executionsCount: (_b = (_a = response.executions) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0 });
1294
- return {
1295
- original: response.original,
1296
- executions: response.executions.map((e) => ({
1297
- workflow_id: e.workflow_id,
1298
- type: e.type,
1299
- status: e.status,
1300
- created_at: e.created_at,
1301
- replayed_from: e.replayed_from,
1302
- restarted_from: e.restarted_from,
1303
- resumed_from: e.resumed_from,
1304
- })),
1305
- };
1306
- }
1307
- /**
1308
- * Compare two workflow executions
1309
- *
1310
- * @example
1311
- * ```ts
1312
- * const comparison = await ductape.workflows.compare({
1313
- * product: 'my-product',
1314
- * env: 'production',
1315
- * workflow_ids: ['wf-123', 'wf-456'],
1316
- * });
1317
- * ```
1318
- */
1319
- async compare(options) {
1320
- console.log('[WorkflowService] compare ENTRY', { workflow_ids: options.workflow_ids, product: options.product, env: options.env });
1321
- const apiService = this.ensureApiService();
1322
- const auth = this.getAuthPayload();
1323
- const response = await apiService.compareExecutions(options.workflow_ids, options.product, options.env, auth);
1324
- console.log('[WorkflowService] compare SUCCESS', { workflow_ids: response.workflows });
1325
- return {
1326
- workflows: response.workflows,
1327
- input_diff: response.input_diff,
1328
- step_diffs: response.step_diffs,
1329
- outcome_diff: response.outcome_diff,
1330
- };
1331
- }
1332
- // ==================== HELPER METHODS ====================
1333
- /**
1334
- * Convert IProductWorkflow to IWorkflowConfig
1335
- */
1336
- productWorkflowToConfig(workflow) {
1337
- return {
1338
- name: workflow.name,
1339
- tag: workflow.tag,
1340
- description: workflow.description,
1341
- input: workflow.input,
1342
- output: workflow.output,
1343
- steps: workflow.steps,
1344
- signals: workflow.signals,
1345
- queries: workflow.queries,
1346
- options: workflow.options,
1347
- envs: workflow.envs,
1348
- };
1349
- }
1350
- }
1351
- exports.WorkflowService = WorkflowService;
1352
- // ==================== WORKFLOW COMPILER ====================
1353
- /** Symbol to detect workflow input proxy when serializing step input to operator strings */
1354
- const INPUT_PROXY_SYMBOL = Symbol.for('RecordingContext.inputProxy');
1355
- /** Symbol to detect step result proxy (values are already operator strings) */
1356
- const STEP_RESULT_PROXY_SYMBOL = Symbol.for('RecordingContext.stepResultProxy');
1357
- /** Symbol on step result proxy to get the operator string (for nested result paths) */
1358
- const STEP_RESULT_REF_STRING = Symbol.for('RecordingContext.stepResultRefString');
1359
- /** Symbol on component result proxy so step return shape uses $StepOutput{path} at runtime */
1360
- const STEP_OUTPUT_REF_STRING = Symbol.for('RecordingContext.stepOutputRefString');
1361
- /**
1362
- * Create a proxy for ctx.input so that ctx.input.field compiles to $Input{field}.
1363
- * When the whole proxy is used as a value (e.g. body: ctx.input), it is replaced
1364
- * with an object of $Input{key} for each key in the workflow input schema.
1365
- */
1366
- function createInputProxy(schemaKeys) {
1367
- const refs = Object.fromEntries(schemaKeys.map((k) => [k, `$Input{${k}}`]));
1368
- const proxy = new Proxy(refs, {
1369
- get(target, prop) {
1370
- if (prop === INPUT_PROXY_SYMBOL)
1371
- return true;
1372
- if (typeof prop === 'string' && prop in target)
1373
- return target[prop];
1374
- return `$Input{${String(prop)}}`;
1375
- },
1376
- });
1377
- proxy[INPUT_PROXY_SYMBOL] = true;
1378
- return proxy;
1379
- }
1380
- /**
1381
- * Create a proxy for a step result so that result.field compiles to $Sequence{main}{stepTag}{field}.
1382
- * Supports nested paths: result.data.nested.foo → $Sequence{main}{stepTag}{data.nested.foo}.
1383
- * When a property is read, recordUsage(stepTag) is called so depends_on can be inferred.
1384
- */
1385
- function createStepResultProxy(workflowTag, stepTag, pathPrefix = '', recordUsage) {
1386
- const refString = pathPrefix ? `$Sequence{main}{${stepTag}}{${pathPrefix}}` : undefined;
1387
- return new Proxy({}, {
1388
- get(_, prop) {
1389
- if (prop === STEP_RESULT_PROXY_SYMBOL)
1390
- return true;
1391
- if (prop === STEP_RESULT_REF_STRING)
1392
- return refString;
1393
- // So template literals like `${paymentResult.transactionId}` get the operator string
1394
- if (prop === Symbol.toPrimitive) {
1395
- return (hint) => (hint === 'string' && refString ? refString : undefined);
1396
- }
1397
- if (prop === 'toString' || prop === 'valueOf') {
1398
- return () => refString !== null && refString !== void 0 ? refString : '';
1399
- }
1400
- if (typeof prop === 'string') {
1401
- recordUsage === null || recordUsage === void 0 ? void 0 : recordUsage(stepTag);
1402
- }
1403
- const fullPath = pathPrefix ? `${pathPrefix}.${String(prop)}` : String(prop);
1404
- return createStepResultProxy(workflowTag, stepTag, fullPath, recordUsage);
1405
- },
1406
- });
1407
- }
1408
- /**
1409
- * Create a proxy for the current step's component result (e.g. storage.upload return).
1410
- * Any property access compiles to $StepOutput{path} so the step's return shape is resolved at runtime from the primitive result.
1411
- * Supports nested paths: proxy.data.id → $StepOutput{data.id}.
1412
- */
1413
- function createStepOutputProxy(pathPrefix = '') {
1414
- return new Proxy({}, {
1415
- get(_, prop) {
1416
- if (prop === STEP_OUTPUT_REF_STRING)
1417
- return pathPrefix ? `$StepOutput{${pathPrefix}}` : undefined;
1418
- const fullPath = pathPrefix ? `${pathPrefix}.${String(prop)}` : String(prop);
1419
- return createStepOutputProxy(fullPath);
1420
- },
1421
- });
1422
- }
1423
- /**
1424
- * Recursively convert recorded step input to operator strings per Ductape operator docs.
1425
- * - Replaces input-proxy values with { key: '$Input{key}', ... } for all workflow input keys.
1426
- * - Leaves values that are already operator strings (e.g. from step result proxy) as-is.
1427
- * - Strings containing operator refs ($Input{...}, $Sequence{main}{...}{...}, $Now) are converted to $Concat([...], "").
1428
- * - Default delimiter is "" so template literals like `receipts/${ctx.input.orderId}.txt` become receipts/ORD-001.txt not receipts/ ORD-001 .txt.
1429
- * - Recurses into plain objects and arrays; leaves other primitives unchanged.
1430
- */
1431
- const OPERATOR_REF_IN_STRING_REGEX = /(\$Input\{[^}]+\}|\$Sequence\{main\}\{[^}]+\}\{[^}]*\}|\$Now)/g;
1432
- function convertStringToConcatIfOperatorRefs(str, delimiter = '') {
1433
- OPERATOR_REF_IN_STRING_REGEX.lastIndex = 0;
1434
- const tokens = str.split(OPERATOR_REF_IN_STRING_REGEX);
1435
- const parts = [];
1436
- for (const t of tokens) {
1437
- if (!t)
1438
- continue;
1439
- const isOp = t.startsWith('$Input{') || t.startsWith('$Sequence{') || t === '$Now';
1440
- if (isOp) {
1441
- parts.push(t);
1442
- }
1443
- else {
1444
- const trimmed = t.trim();
1445
- if (trimmed.length > 0)
1446
- parts.push(trimmed);
1447
- }
1448
- }
1449
- if (parts.length <= 1)
1450
- return str;
1451
- return `$Concat([${parts.map((s) => (s.startsWith('$') ? s : JSON.stringify(s))).join(', ')}], "${delimiter.replace(/"/g, '\\"')}")`;
1452
- }
1453
- function convertToOperatorInput(value, inputProxy, schemaKeys) {
1454
- if (value === null || value === undefined)
1455
- return value;
1456
- if (inputProxy && value === inputProxy) {
1457
- return Object.fromEntries(schemaKeys.map((k) => [k, `$Input{${k}}`]));
1458
- }
1459
- const v = value;
1460
- if (typeof v === 'object' && v !== null && v[INPUT_PROXY_SYMBOL] === true) {
1461
- return Object.fromEntries(schemaKeys.map((k) => [k, `$Input{${k}}`]));
1462
- }
1463
- // Step result proxy (including nested result.data.foo) exposes operator string via STEP_RESULT_REF_STRING
1464
- if (typeof v === 'object' && v !== null && typeof v[STEP_RESULT_REF_STRING] === 'string') {
1465
- return v[STEP_RESULT_REF_STRING];
1466
- }
1467
- // Component result proxy (current step's primitive return) so step.output gets $StepOutput{path}
1468
- if (typeof v === 'object' && v !== null && typeof v[STEP_OUTPUT_REF_STRING] === 'string') {
1469
- return v[STEP_OUTPUT_REF_STRING];
1470
- }
1471
- if (Array.isArray(value)) {
1472
- return value.map((item) => convertToOperatorInput(item, inputProxy, schemaKeys));
1473
- }
1474
- if (typeof value === 'object' && value !== null && !(value instanceof Date)) {
1475
- const out = {};
1476
- for (const key of Object.keys(value)) {
1477
- out[key] = convertToOperatorInput(value[key], inputProxy, schemaKeys);
1478
- }
1479
- return out;
1480
- }
1481
- if (typeof value === 'string') {
1482
- return convertStringToConcatIfOperatorRefs(value);
1483
- }
1484
- return value;
1485
- }
1486
- /**
1487
- * Recording context that captures step definitions during handler execution.
1488
- * Uses operator strings ($Input{field}, $Sequence{main}{stepTag}{field}) per Ductape operator docs.
1489
- */
1490
- /** Build a step condition from a branch override so the step only runs when the overridden step's output matches (e.g. $Step{validate}{valid} == true). */
1491
- function buildConditionFromOverride(stepTag, override) {
1492
- if (override === null || override === undefined)
1493
- return '';
1494
- if (typeof override !== 'object' || Array.isArray(override)) {
1495
- return `$Step{${stepTag}}{value} == ${JSON.stringify(override)}`;
1496
- }
1497
- const parts = [];
1498
- for (const [key, val] of Object.entries(override)) {
1499
- if (typeof val !== 'object' || val === null || Array.isArray(val)) {
1500
- parts.push(`$Step{${stepTag}}{${key}} == ${JSON.stringify(val)}`);
1501
- }
1502
- }
1503
- return parts.length === 0 ? '' : parts.join(' && ');
1504
- }
1505
- /** Build a step condition from a scenario (recordInput) so the step only runs when workflow input matches (e.g. $Input{type} == 'a'). */
1506
- function buildConditionFromScenario(scenario) {
1507
- const parts = [];
1508
- for (const [key, val] of Object.entries(scenario)) {
1509
- if (val !== undefined && (typeof val !== 'object' || val === null || Array.isArray(val))) {
1510
- parts.push(`$Input{${key}} == ${JSON.stringify(val)}`);
1511
- }
1512
- }
1513
- return parts.length === 0 ? '' : parts.join(' && ');
1514
- }
1515
- /** Create ctx.input that prefers recordInput values (for loops/switch) and falls back to $Input{field} for other keys. */
1516
- function createHybridInputProxy(recordInput, inputProxy) {
1517
- const base = recordInput !== null && recordInput !== void 0 ? recordInput : {};
1518
- if (!inputProxy)
1519
- return base;
1520
- return new Proxy(base, {
1521
- get(target, prop) {
1522
- if (typeof prop !== 'string')
1523
- return target[prop];
1524
- if (prop in target && target[prop] !== undefined) {
1525
- return target[prop];
1526
- }
1527
- return inputProxy[prop];
1528
- },
1529
- has(target, prop) {
1530
- return prop in target || (inputProxy && prop in inputProxy);
1531
- },
1532
- });
1533
- }
1534
- class RecordingContext {
1535
- constructor(_input, workflowTag, workflowInputSchema, stepResultOverrides, scenarioCondition, recordInput) {
1536
- this._steps = [];
1537
- this._stepOrder = 0;
1538
- this._currentStepTag = null;
1539
- /** Step being built for the current ctx.step() call; updated in place by _updateCurrentStep so we emit one step per ctx.step(). */
1540
- this._pendingStep = null;
1541
- this._pendingRollback = null;
1542
- this._inputProxy = null;
1543
- /** Step tags whose result was read during the current step (for inferring depends_on) */
1544
- this._stepResultDependencies = new Set();
1545
- /** When set, the next step we push gets this condition (from a prior step's branch override). */
1546
- this._pendingConditionFromOverride = null;
1547
- this._stepResultOverrides = {};
1548
- /** When set (from recordScenarios), every step we push gets this condition so it only runs when input matches. */
1549
- this._scenarioCondition = null;
1550
- this._recordInput = null;
1551
- this._hybridInput = null;
1552
- this._workflowTag = workflowTag;
1553
- this._inputSchemaKeys = workflowInputSchema ? Object.keys(workflowInputSchema) : [];
1554
- this._stepResultOverrides = stepResultOverrides !== null && stepResultOverrides !== void 0 ? stepResultOverrides : {};
1555
- this._scenarioCondition = scenarioCondition !== null && scenarioCondition !== void 0 ? scenarioCondition : null;
1556
- this._recordInput = recordInput !== null && recordInput !== void 0 ? recordInput : null;
1557
- if (this._inputSchemaKeys.length > 0) {
1558
- this._inputProxy = createInputProxy(this._inputSchemaKeys);
1559
- }
1560
- this._hybridInput = createHybridInputProxy(this._recordInput, this._inputProxy);
1561
- }
1562
- // Readonly workflow metadata — prefer recordInput for control flow (loops, switch), fall back to $Input{field}
1563
- get input() {
1564
- var _a, _b;
1565
- return ((_b = (_a = this._hybridInput) !== null && _a !== void 0 ? _a : this._inputProxy) !== null && _b !== void 0 ? _b : {});
1566
- }
1567
- get workflow_id() {
1568
- return `compile-${this._workflowTag}`;
1569
- }
1570
- get workflow_tag() {
1571
- return this._workflowTag;
1572
- }
1573
- get env() {
1574
- return 'compile';
1575
- }
1576
- get product() {
1577
- return 'compile';
1578
- }
1579
- get context() {
1580
- return {};
1581
- }
1582
- get state() {
1583
- return {};
1584
- }
1585
- get steps() {
1586
- return {};
1587
- }
1588
- get completed_steps() {
1589
- return [];
1590
- }
1591
- get current_step() {
1592
- return this._currentStepTag;
1593
- }
1594
- /** At record time returns "$Now" so template literals like `at ${ctx.now()}` compile to $Concat(..., "$Now"). */
1595
- get now() {
1596
- return '$Now';
1597
- }
1598
- /**
1599
- * Record a step definition
1600
- */
1601
- async step(tag, handler, rollback, options) {
1602
- this._currentStepTag = tag;
1603
- this._stepOrder++;
1604
- this._stepResultDependencies = new Set();
1605
- // Create step placeholder - will be updated in place by component calls (_updateCurrentStep)
1606
- const step = {
1607
- tag,
1608
- name: tag,
1609
- type: productsBuilder_types_1.WorkflowStepType.ACTION,
1610
- event: '',
1611
- input: {},
1612
- options,
1613
- };
1614
- this._pendingStep = step;
1615
- // Execute handler to capture component calls and step return value
1616
- let stepReturn;
1617
- try {
1618
- stepReturn = await handler();
1619
- }
1620
- catch (e) {
1621
- // Ignore errors during compilation - we're just tracing
1622
- }
1623
- this._pendingStep = null;
1624
- // Parse and store step output in schema (operator strings for downstream $Step{tag}{field} references)
1625
- const valueToCapture = stepReturn !== undefined && stepReturn !== null && typeof stepReturn === 'object' && !Array.isArray(stepReturn)
1626
- ? stepReturn.output !== undefined && stepReturn.process_id !== undefined
1627
- ? stepReturn.output
1628
- : stepReturn
1629
- : stepReturn;
1630
- if (valueToCapture !== undefined && valueToCapture !== null && typeof valueToCapture === 'object' && !Array.isArray(valueToCapture)) {
1631
- step.output = convertToOperatorInput(valueToCapture, this._inputProxy, this._inputSchemaKeys);
1632
- }
1633
- else if (valueToCapture !== undefined && valueToCapture !== null) {
1634
- step.output = { value: convertToOperatorInput(valueToCapture, this._inputProxy, this._inputSchemaKeys) };
1635
- }
1636
- else {
1637
- step.output = {};
1638
- }
1639
- // If rollback was provided, try to capture it
1640
- if (rollback && this._pendingRollback) {
1641
- step.rollback = this._pendingRollback;
1642
- this._pendingRollback = null;
1643
- }
1644
- // Always add the step (even when no component was called — e.g. validate-order that only returns)
1645
- if (!step.event) {
1646
- step.event = step.tag;
1647
- }
1648
- if (this._stepResultDependencies.size > 0) {
1649
- step.depends_on = Array.from(this._stepResultDependencies);
1650
- }
1651
- // Apply conditions: scenario (e.g. $Input{type} == 'a') and/or branch override (e.g. $Step{validate}{valid} == true)
1652
- const condParts = [];
1653
- if (this._scenarioCondition)
1654
- condParts.push(`(${this._scenarioCondition})`);
1655
- if (this._pendingConditionFromOverride) {
1656
- condParts.push(`(${this._pendingConditionFromOverride})`);
1657
- this._pendingConditionFromOverride = null;
1658
- }
1659
- if (condParts.length > 0)
1660
- step.condition = condParts.join(' && ');
1661
- const overrideForThisStep = this._stepResultOverrides[tag];
1662
- if (overrideForThisStep !== undefined) {
1663
- this._pendingConditionFromOverride = buildConditionFromOverride(tag, overrideForThisStep);
1664
- }
1665
- this._steps.push(step);
1666
- this._currentStepTag = null;
1667
- // When branchOverrides[tag] is set, return it so the handler continues past if (!result.x) return (records both branches)
1668
- if (overrideForThisStep !== undefined) {
1669
- return overrideForThisStep;
1670
- }
1671
- // Return step-result proxy so result.field compiles to $Sequence{main}{stepTag}{field}
1672
- const recordUsage = (depTag) => this._stepResultDependencies.add(depTag);
1673
- return createStepResultProxy(this._workflowTag, step.tag, '', recordUsage);
1674
- }
1675
- // ==================== COMPONENT CONTEXTS ====================
1676
- get action() {
1677
- return {
1678
- run: async (options) => {
1679
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.ACTION, options.action, {
1680
- app: options.app,
1681
- input: options.input,
1682
- options: { retries: options.retries, timeout: options.timeout },
1683
- });
1684
- return createStepOutputProxy();
1685
- },
1686
- };
1687
- }
1688
- get database() {
1689
- return {
1690
- execute: async (options) => {
1691
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1692
- database: options.database,
1693
- input: options.input,
1694
- options: { retries: options.retries, timeout: options.timeout },
1695
- });
1696
- return createStepOutputProxy();
1697
- },
1698
- query: async (options) => {
1699
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1700
- database: options.database,
1701
- input: options.params || {},
1702
- });
1703
- return createStepOutputProxy();
1704
- },
1705
- insert: async (options) => {
1706
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1707
- database: options.database,
1708
- input: { table: options.table, data: options.data },
1709
- });
1710
- return createStepOutputProxy();
1711
- },
1712
- update: async (options) => {
1713
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1714
- database: options.database,
1715
- input: { table: options.table, data: options.data, where: options.where },
1716
- });
1717
- return createStepOutputProxy();
1718
- },
1719
- delete: async (options) => {
1720
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1721
- database: options.database,
1722
- input: { table: options.table, where: options.where },
1723
- });
1724
- return createStepOutputProxy();
1725
- },
1726
- };
1727
- }
1728
- get graph() {
1729
- return {
1730
- execute: async (options) => {
1731
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, options.action, {
1732
- graph: options.graph,
1733
- input: options.input,
1734
- });
1735
- return createStepOutputProxy();
1736
- },
1737
- createNode: async (options) => {
1738
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'createNode', {
1739
- graph: options.graph,
1740
- input: { labels: options.labels, properties: options.properties },
1741
- });
1742
- return createStepOutputProxy();
1743
- },
1744
- updateNode: async (options) => {
1745
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'updateNode', {
1746
- graph: options.graph,
1747
- input: { id: options.id, properties: options.properties },
1748
- });
1749
- return createStepOutputProxy();
1750
- },
1751
- deleteNode: async (options) => {
1752
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'deleteNode', {
1753
- graph: options.graph,
1754
- input: { id: options.id },
1755
- });
1756
- return createStepOutputProxy();
1757
- },
1758
- createRelationship: async (options) => {
1759
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'createRelationship', {
1760
- graph: options.graph,
1761
- input: { from: options.from, to: options.to, type: options.type, properties: options.properties },
1762
- });
1763
- return createStepOutputProxy();
1764
- },
1765
- deleteRelationship: async (options) => {
1766
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'deleteRelationship', {
1767
- graph: options.graph,
1768
- input: { id: options.id },
1769
- });
1770
- return createStepOutputProxy();
1771
- },
1772
- query: async (options) => {
1773
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, options.action, {
1774
- graph: options.graph,
1775
- input: options.params || {},
1776
- });
1777
- return createStepOutputProxy();
1778
- },
1779
- };
1780
- }
1781
- get notification() {
1782
- return {
1783
- send: async (options) => {
1784
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1785
- notification: options.notification,
1786
- input: options.input,
1787
- options: { retries: options.retries },
1788
- });
1789
- return createStepOutputProxy();
1790
- },
1791
- email: async (options) => {
1792
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1793
- notification: options.notification,
1794
- input: { recipients: options.recipients, subject: options.subject, template: options.template },
1795
- });
1796
- return createStepOutputProxy();
1797
- },
1798
- push: async (options) => {
1799
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1800
- notification: options.notification,
1801
- input: { tokens: options.tokens, title: options.title, body: options.body, data: options.data },
1802
- });
1803
- return createStepOutputProxy();
1804
- },
1805
- sms: async (options) => {
1806
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1807
- notification: options.notification,
1808
- input: { phones: options.phones, message: options.message },
1809
- });
1810
- return createStepOutputProxy();
1811
- },
1812
- };
1813
- }
1814
- get storage() {
1815
- return {
1816
- upload: async (options) => {
1817
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.STORAGE, options.event, {
1818
- storage: options.storage,
1819
- input: options.input,
1820
- options: { retries: options.retries },
1821
- });
1822
- return createStepOutputProxy();
1823
- },
1824
- download: async (options) => {
1825
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.STORAGE, options.event, {
1826
- storage: options.storage,
1827
- input: options.input,
1828
- });
1829
- return createStepOutputProxy();
1830
- },
1831
- delete: async (options) => {
1832
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.STORAGE, options.event, {
1833
- storage: options.storage,
1834
- input: options.input,
1835
- });
1836
- return createStepOutputProxy();
1837
- },
1838
- };
1839
- }
1840
- /** Ductape primitive: message broker produce. Records a produce step (event = "broker-tag:topic-tag"). */
1841
- get messaging() {
1842
- return {
1843
- produce: async (options) => {
1844
- const colon = options.event.indexOf(':');
1845
- const broker = colon >= 0 ? options.event.slice(0, colon) : options.event;
1846
- const topic = colon >= 0 ? options.event.slice(colon + 1) : options.event;
1847
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.PRODUCE, topic, {
1848
- broker,
1849
- input: { message: options.message },
1850
- });
1851
- return createStepOutputProxy();
1852
- },
1853
- };
1854
- }
1855
- /** @deprecated Prefer ctx.messaging.produce() */
1856
- get publish() {
1857
- return {
1858
- send: async (options) => {
1859
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.PRODUCE, options.event, {
1860
- broker: options.broker,
1861
- input: options.input,
1862
- options: { retries: options.retries },
1863
- });
1864
- return createStepOutputProxy();
1865
- },
1866
- };
1867
- }
1868
- get feature() {
1869
- return {
1870
- run: async (options) => {
1871
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.FEATURE, options.feature, {
1872
- input: options.input,
1873
- options: { retries: options.retries, timeout: options.timeout },
1874
- });
1875
- return createStepOutputProxy();
1876
- },
1877
- };
1878
- }
1879
- get quota() {
1880
- return {
1881
- execute: async (options) => {
1882
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.QUOTA, 'execute', {
1883
- quota: options.quota,
1884
- input: options.input,
1885
- options: { timeout: options.timeout },
1886
- });
1887
- return createStepOutputProxy();
1888
- },
1889
- };
1890
- }
1891
- get fallback() {
1892
- return {
1893
- execute: async (options) => {
1894
- this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.FALLBACK, 'execute', {
1895
- fallback: options.fallback,
1896
- input: options.input,
1897
- options: { timeout: options.timeout },
1898
- });
1899
- return createStepOutputProxy();
1900
- },
1901
- };
1902
- }
1903
- get healthcheck() {
1904
- return {
1905
- getStatus: async (tag) => {
1906
- return { status: 'available', lastChecked: new Date().toISOString(), lastLatency: 0 };
1907
- },
1908
- };
1909
- }
1910
- get transform() {
1911
- return {
1912
- size: (obj) => Object.keys(obj).length,
1913
- length: (arr) => arr.length,
1914
- parseJson: (str) => JSON.parse(str),
1915
- stringify: (obj) => JSON.stringify(obj),
1916
- upper: (str) => str.toUpperCase(),
1917
- lower: (str) => str.toLowerCase(),
1918
- trim: (str) => str.trim(),
1919
- split: (str, separator) => str.split(separator),
1920
- join: (arr, separator) => arr.join(separator),
1921
- now: () => Date.now(),
1922
- formatDate: (date, format) => new Date(date).toISOString(),
1923
- };
1924
- }
1925
- // ==================== DATA REFERENCES ====================
1926
- variable(app, key) {
1927
- return `$Variable{${app}}{${key}}`;
1928
- }
1929
- constant(app, key) {
1930
- return `$Constant{${app}}{${key}}`;
1931
- }
1932
- token(key) {
1933
- return `$Secret{${key}}`;
1934
- }
1935
- get auth() {
1936
- return {};
1937
- }
1938
- default(value, fallback) {
1939
- return value !== null && value !== void 0 ? value : fallback;
1940
- }
1941
- // ==================== CONTROL FLOW ====================
1942
- async sleep(duration) {
1943
- const ms = typeof duration === 'string' ? this._parseDuration(duration) : duration;
1944
- this._addControlStep(productsBuilder_types_1.WorkflowStepType.SLEEP, 'sleep', { duration: ms });
1945
- }
1946
- async waitForSignal(signal, options) {
1947
- const signals = Array.isArray(signal) ? signal : [signal];
1948
- const timeout = (options === null || options === void 0 ? void 0 : options.timeout)
1949
- ? typeof options.timeout === 'string'
1950
- ? this._parseDuration(options.timeout)
1951
- : options.timeout
1952
- : undefined;
1953
- this._addControlStep(productsBuilder_types_1.WorkflowStepType.WAIT_FOR_SIGNAL, signals[0], {
1954
- signals,
1955
- options: timeout ? { timeout } : undefined,
1956
- });
1957
- return {};
1958
- }
1959
- async checkpoint(name, metadata) {
1960
- this._addControlStep(productsBuilder_types_1.WorkflowStepType.CHECKPOINT, name, { metadata });
1961
- }
1962
- // ==================== STATE MANAGEMENT ====================
1963
- setState(key, value) {
1964
- // No-op during compilation
1965
- }
1966
- getState(key) {
1967
- return undefined;
1968
- }
1969
- // ==================== LOGGING ====================
1970
- get log() {
1971
- return {
1972
- debug: (message, data) => { },
1973
- info: (message, data) => { },
1974
- warn: (message, data) => { },
1975
- error: (message, data) => { },
1976
- };
1977
- }
1978
- // ==================== CHILD WORKFLOWS ====================
1979
- async workflow(childId, tag, input, options) {
1980
- this._addControlStep(productsBuilder_types_1.WorkflowStepType.CHILD_WORKFLOW, 'execute', {
1981
- workflow: tag,
1982
- input,
1983
- options: options
1984
- ? {
1985
- timeout: options.timeout
1986
- ? typeof options.timeout === 'string'
1987
- ? this._parseDuration(options.timeout)
1988
- : options.timeout
1989
- : undefined,
1990
- retries: options.retries,
1991
- }
1992
- : undefined,
1993
- });
1994
- return {};
1995
- }
1996
- // ==================== ROLLBACK ====================
1997
- async triggerRollback(reason) {
1998
- return { success: true, rolled_back_steps: [], reason };
1999
- }
2000
- // ==================== INTERNAL HELPERS ====================
2001
- _updateCurrentStep(type, event, data) {
2002
- if (!this._currentStepTag)
2003
- return;
2004
- // Update the step we're currently building (one step per ctx.step()), so we don't duplicate
2005
- const step = this._pendingStep && this._pendingStep.tag === this._currentStepTag
2006
- ? this._pendingStep
2007
- : this._steps.find((s) => s.tag === this._currentStepTag);
2008
- if (!step) {
2009
- const newStep = {
2010
- tag: this._currentStepTag,
2011
- type,
2012
- event,
2013
- input: data.input || {},
2014
- };
2015
- this._steps.push(newStep);
2016
- this._updateStepProperties(newStep, type, event, data);
2017
- return;
2018
- }
2019
- this._updateStepProperties(step, type, event, data);
2020
- }
2021
- _updateStepProperties(step, type, event, data) {
2022
- // Update step properties
2023
- step.type = type;
2024
- step.event = event;
2025
- if (data.app)
2026
- step.app = data.app;
2027
- if (data.database)
2028
- step.database = data.database;
2029
- if (data.graph)
2030
- step.graph = data.graph;
2031
- if (data.storage)
2032
- step.storage = data.storage;
2033
- if (data.notification)
2034
- step.notification = data.notification;
2035
- if (data.broker)
2036
- step.broker = data.broker;
2037
- if (data.quota)
2038
- step.quota = data.quota;
2039
- if (data.fallback)
2040
- step.fallback = data.fallback;
2041
- if (data.workflow)
2042
- step.workflow = data.workflow;
2043
- if (data.input) {
2044
- step.input = convertToOperatorInput(data.input, this._inputProxy, this._inputSchemaKeys);
2045
- }
2046
- if (data.options)
2047
- step.options = Object.assign(Object.assign({}, step.options), data.options);
2048
- }
2049
- _addControlStep(type, event, data) {
2050
- const tag = `${type}-${this._stepOrder++}`;
2051
- const input = convertToOperatorInput(data, this._inputProxy, this._inputSchemaKeys);
2052
- const step = {
2053
- tag,
2054
- type,
2055
- event,
2056
- input,
2057
- };
2058
- if (data.workflow != null)
2059
- step.workflow = data.workflow;
2060
- if (data.options != null)
2061
- step.options = data.options;
2062
- this._steps.push(step);
2063
- }
2064
- _parseDuration(duration) {
2065
- const match = duration.match(/^(\d+)(ms|s|m|h|d)$/);
2066
- if (!match)
2067
- return parseInt(duration, 10) || 0;
2068
- const value = parseInt(match[1], 10);
2069
- const unit = match[2];
2070
- switch (unit) {
2071
- case 'ms':
2072
- return value;
2073
- case 's':
2074
- return value * 1000;
2075
- case 'm':
2076
- return value * 60 * 1000;
2077
- case 'h':
2078
- return value * 60 * 60 * 1000;
2079
- case 'd':
2080
- return value * 24 * 60 * 60 * 1000;
2081
- default:
2082
- return value;
2083
- }
2084
- }
2085
- /** Convert a value (e.g. handler return) to operator form for workflow output schema */
2086
- captureOutput(value) {
2087
- if (value === undefined || value === null)
2088
- return {};
2089
- const converted = convertToOperatorInput(value, this._inputProxy, this._inputSchemaKeys);
2090
- if (typeof converted === 'object' && converted !== null && !Array.isArray(converted)) {
2091
- return converted;
2092
- }
2093
- return { value: converted };
2094
- }
2095
- /** Get collected steps */
2096
- getSteps() {
2097
- return this._steps;
2098
- }
2099
- }
2100
- /**
2101
- * Compiles code-first workflow definitions to JSON schema
2102
- * Uses runtime handler tracing to capture step definitions
2103
- */
2104
- class WorkflowCompiler {
2105
- constructor(options) {
2106
- this.options = options;
2107
- }
2108
- /**
2109
- * Compile the workflow definition to JSON schema
2110
- * Executes the handler with a recording context to capture step definitions
2111
- */
2112
- compile() {
2113
- var _a, _b, _c, _d;
2114
- const mockInput = ((_a = this.options.recordInput) !== null && _a !== void 0 ? _a : {});
2115
- const recordingCtx = new RecordingContext(mockInput, this.options.tag, this.options.input, this.options.branchOverrides, undefined, ((_b = this.options.recordInput) !== null && _b !== void 0 ? _b : {}));
2116
- // Execute handler to trace step definitions
2117
- try {
2118
- // Run the handler synchronously to capture all step calls
2119
- // Note: This won't await async operations, but will capture the step structure
2120
- const handlerPromise = this.options.handler(recordingCtx);
2121
- // For synchronous tracing, we don't need to await
2122
- // The recording context captures calls as they're made
2123
- if (handlerPromise && typeof handlerPromise.then === 'function') {
2124
- // Handler is async - we capture what we can synchronously
2125
- // For full async tracing, use compileAsync()
2126
- }
2127
- }
2128
- catch (e) {
2129
- // Ignore errors during compilation - we're tracing structure, not executing
2130
- }
2131
- return {
2132
- name: this.options.name,
2133
- tag: this.options.tag,
2134
- description: this.options.description,
2135
- input: (_c = this.options.input) !== null && _c !== void 0 ? _c : {},
2136
- output: (_d = this.options.output) !== null && _d !== void 0 ? _d : {},
2137
- steps: recordingCtx.getSteps(),
2138
- signals: this.options.signals
2139
- ? Object.fromEntries(Object.entries(this.options.signals).map(([name, config]) => [name, { name, input: config.input }]))
2140
- : undefined,
2141
- queries: this.options.queries
2142
- ? Object.fromEntries(Object.entries(this.options.queries).map(([name, config]) => {
2143
- var _a;
2144
- return [
2145
- name,
2146
- { name, handler: (_a = config.handler) === null || _a === void 0 ? void 0 : _a.toString() },
2147
- ];
2148
- }))
2149
- : undefined,
2150
- options: this.options.options,
2151
- envs: this.options.envs,
2152
- };
2153
- }
2154
- /**
2155
- * Compile the workflow definition asynchronously
2156
- * Fully awaits the handler to capture all step definitions.
2157
- * With recordScenarios, runs the handler once per scenario and merges steps (for switch-style branches).
2158
- * With recordInput, uses that as ctx.input so loops and control flow see real values.
2159
- */
2160
- async compileAsync() {
2161
- var _a, _b, _c, _d;
2162
- const scenarios = this.options.recordScenarios && this.options.recordScenarios.length > 0
2163
- ? this.options.recordScenarios
2164
- : [(_a = this.options.recordInput) !== null && _a !== void 0 ? _a : {}];
2165
- const stepsByTag = new Map();
2166
- const stepOrder = [];
2167
- let handlerOutput = undefined;
2168
- let lastCtx = null;
2169
- for (const scenario of scenarios) {
2170
- const scenarioObj = typeof scenario === 'object' && scenario !== null ? scenario : {};
2171
- const scenarioCondition = this.options.recordScenarios && Object.keys(scenarioObj).length > 0
2172
- ? buildConditionFromScenario(scenarioObj)
2173
- : null;
2174
- const recordInput = Object.keys(scenarioObj).length > 0
2175
- ? scenarioObj
2176
- : ((_b = this.options.recordInput) !== null && _b !== void 0 ? _b : {});
2177
- const recordingCtx = new RecordingContext((recordInput !== null && recordInput !== void 0 ? recordInput : {}), this.options.tag, this.options.input, this.options.branchOverrides, scenarioCondition, recordInput);
2178
- lastCtx = recordingCtx;
2179
- try {
2180
- const out = await this.options.handler(recordingCtx);
2181
- if (out !== undefined && out !== null)
2182
- handlerOutput = out;
2183
- }
2184
- catch (_) { }
2185
- for (const s of recordingCtx.getSteps()) {
2186
- const existing = stepsByTag.get(s.tag);
2187
- if (existing) {
2188
- const c1 = existing.condition;
2189
- const c2 = s.condition;
2190
- if (c1 && c2)
2191
- existing.condition = `(${c1}) || (${c2})`;
2192
- else if (c2)
2193
- existing.condition = c2;
2194
- }
2195
- else {
2196
- stepsByTag.set(s.tag, Object.assign({}, s));
2197
- stepOrder.push(s.tag);
2198
- }
2199
- }
2200
- }
2201
- const finalSteps = stepOrder.map((tag) => stepsByTag.get(tag)).filter(Boolean);
2202
- const output = handlerOutput !== undefined && handlerOutput !== null && lastCtx
2203
- ? lastCtx.captureOutput(handlerOutput)
2204
- : ((_c = this.options.output) !== null && _c !== void 0 ? _c : {});
2205
- return {
2206
- name: this.options.name,
2207
- tag: this.options.tag,
2208
- description: this.options.description,
2209
- input: (_d = this.options.input) !== null && _d !== void 0 ? _d : {},
2210
- output: output,
2211
- steps: finalSteps,
2212
- signals: this.options.signals
2213
- ? Object.fromEntries(Object.entries(this.options.signals).map(([name, config]) => [name, { name, input: config.input }]))
2214
- : undefined,
2215
- queries: this.options.queries
2216
- ? Object.fromEntries(Object.entries(this.options.queries).map(([name, config]) => {
2217
- var _a;
2218
- return [
2219
- name,
2220
- { name, handler: (_a = config.handler) === null || _a === void 0 ? void 0 : _a.toString() },
2221
- ];
2222
- }))
2223
- : undefined,
2224
- options: this.options.options,
2225
- envs: this.options.envs,
2226
- };
2227
- }
2228
- }
2229
- // Export singleton instance for convenience
2230
- exports.workflowService = new WorkflowService();
2231
- // Default export
2232
- exports.default = WorkflowService;
2233
- //# sourceMappingURL=workflows.service.js.map