@ductape/sdk 0.0.4-v6 → 0.0.4-v61

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 (937) hide show
  1. package/dist/agents/agent-context.d.ts +98 -0
  2. package/dist/agents/agent-context.js +588 -0
  3. package/dist/agents/agent-context.js.map +1 -0
  4. package/dist/agents/agent-executor.d.ts +180 -0
  5. package/dist/agents/agent-executor.js +715 -0
  6. package/dist/agents/agent-executor.js.map +1 -0
  7. package/dist/agents/agents.service.d.ts +310 -0
  8. package/dist/agents/agents.service.js +1249 -0
  9. package/dist/agents/agents.service.js.map +1 -0
  10. package/dist/agents/index.d.ts +55 -0
  11. package/dist/agents/index.js +110 -0
  12. package/dist/agents/index.js.map +1 -0
  13. package/dist/agents/memory-manager.d.ts +182 -0
  14. package/dist/agents/memory-manager.js +383 -0
  15. package/dist/agents/memory-manager.js.map +1 -0
  16. package/dist/agents/tool-registry.d.ts +141 -0
  17. package/dist/agents/tool-registry.js +355 -0
  18. package/dist/agents/tool-registry.js.map +1 -0
  19. package/dist/agents/types/agents.types.d.ts +1227 -0
  20. package/dist/agents/types/agents.types.js +12 -0
  21. package/dist/agents/types/agents.types.js.map +1 -0
  22. package/dist/agents/types/index.d.ts +6 -0
  23. package/dist/agents/types/index.js +23 -0
  24. package/dist/agents/types/index.js.map +1 -0
  25. package/dist/agents/vector-store-adapter.d.ts +108 -0
  26. package/dist/agents/vector-store-adapter.js +213 -0
  27. package/dist/agents/vector-store-adapter.js.map +1 -0
  28. package/dist/api/services/appApi.service.d.ts +51 -5
  29. package/dist/api/services/appApi.service.js +101 -3
  30. package/dist/api/services/appApi.service.js.map +1 -1
  31. package/dist/api/services/pricingApi.service.d.ts +10 -0
  32. package/dist/api/services/pricingApi.service.js +34 -0
  33. package/dist/api/services/pricingApi.service.js.map +1 -0
  34. package/dist/api/services/processorApi.service.d.ts +334 -2
  35. package/dist/api/services/processorApi.service.js +264 -2
  36. package/dist/api/services/processorApi.service.js.map +1 -1
  37. package/dist/api/services/productsApi.service.d.ts +108 -1
  38. package/dist/api/services/productsApi.service.js +150 -3
  39. package/dist/api/services/productsApi.service.js.map +1 -1
  40. package/dist/api/services/resilienceApi.service.d.ts +106 -0
  41. package/dist/api/services/resilienceApi.service.js +224 -0
  42. package/dist/api/services/resilienceApi.service.js.map +1 -0
  43. package/dist/api/services/secretsApi.service.d.ts +50 -0
  44. package/dist/api/services/secretsApi.service.js +124 -0
  45. package/dist/api/services/secretsApi.service.js.map +1 -0
  46. package/dist/api/services/workflowApi.service.d.ts +199 -0
  47. package/dist/api/services/workflowApi.service.js +183 -0
  48. package/dist/api/services/workflowApi.service.js.map +1 -0
  49. package/dist/api/services/workspaceApi.service.d.ts +8 -0
  50. package/dist/api/services/workspaceApi.service.js +20 -0
  51. package/dist/api/services/workspaceApi.service.js.map +1 -1
  52. package/dist/api/urls.d.ts +65 -1
  53. package/dist/api/urls.js +90 -18
  54. package/dist/api/urls.js.map +1 -1
  55. package/dist/api/utils/auth.utils.d.ts +1 -3
  56. package/dist/api/utils/auth.utils.js.map +1 -1
  57. package/dist/api/utils/cache.utils.d.ts +1 -1
  58. package/dist/api/utils/cache.utils.js +2 -2
  59. package/dist/api/utils/cache.utils.js.map +1 -1
  60. package/dist/api/utils/strings.utils.d.ts +2 -0
  61. package/dist/api/utils/strings.utils.js +14 -0
  62. package/dist/api/utils/strings.utils.js.map +1 -1
  63. package/dist/apps/services/app.service.d.ts +41 -33
  64. package/dist/apps/services/app.service.js +472 -184
  65. package/dist/apps/services/app.service.js.map +1 -1
  66. package/dist/apps/utils/auth-context-manager.d.ts +137 -0
  67. package/dist/apps/utils/auth-context-manager.js +248 -0
  68. package/dist/apps/utils/auth-context-manager.js.map +1 -0
  69. package/dist/apps/utils/credential-manager.d.ts +128 -0
  70. package/dist/apps/utils/credential-manager.js +199 -0
  71. package/dist/apps/utils/credential-manager.js.map +1 -0
  72. package/dist/apps/utils/index.d.ts +10 -0
  73. package/dist/apps/utils/index.js +54 -0
  74. package/dist/apps/utils/index.js.map +1 -0
  75. package/dist/apps/utils/input-helpers.d.ts +67 -0
  76. package/dist/apps/utils/input-helpers.js +185 -0
  77. package/dist/apps/utils/input-helpers.js.map +1 -0
  78. package/dist/apps/utils/input-resolver.d.ts +165 -0
  79. package/dist/apps/utils/input-resolver.js +477 -0
  80. package/dist/apps/utils/input-resolver.js.map +1 -0
  81. package/dist/apps/utils/oauth-manager.d.ts +196 -0
  82. package/dist/apps/utils/oauth-manager.js +429 -0
  83. package/dist/apps/utils/oauth-manager.js.map +1 -0
  84. package/dist/apps/validators/joi-validators/create.appAction.validator.d.ts +1 -2
  85. package/dist/apps/validators/joi-validators/create.appAction.validator.js +21 -2
  86. package/dist/apps/validators/joi-validators/create.appAction.validator.js.map +1 -1
  87. package/dist/apps/validators/joi-validators/update.appAction.validator.js +11 -1
  88. package/dist/apps/validators/joi-validators/update.appAction.validator.js.map +1 -1
  89. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.d.ts +1 -1
  90. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js +34 -1
  91. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js.map +1 -1
  92. package/dist/bin.d.ts +26 -0
  93. package/dist/bin.js +28 -0
  94. package/dist/bin.js.map +1 -0
  95. package/dist/brokers/brokers.service.d.ts +289 -0
  96. package/dist/brokers/brokers.service.js +722 -0
  97. package/dist/brokers/brokers.service.js.map +1 -0
  98. package/dist/brokers/index.d.ts +46 -0
  99. package/dist/brokers/index.js +83 -0
  100. package/dist/brokers/index.js.map +1 -0
  101. package/dist/brokers/types/index.d.ts +314 -0
  102. package/dist/brokers/types/index.js +8 -0
  103. package/dist/brokers/types/index.js.map +1 -0
  104. package/dist/brokers/utils/broker.util.d.ts +33 -0
  105. package/dist/brokers/utils/broker.util.js +125 -0
  106. package/dist/brokers/utils/broker.util.js.map +1 -0
  107. package/dist/brokers/utils/providers/aws-sqs.service.d.ts +16 -0
  108. package/dist/brokers/utils/providers/aws-sqs.service.js +71 -0
  109. package/dist/brokers/utils/providers/aws-sqs.service.js.map +1 -0
  110. package/dist/brokers/utils/providers/google-pubsub.service.d.ts +16 -0
  111. package/dist/brokers/utils/providers/google-pubsub.service.js +43 -0
  112. package/dist/brokers/utils/providers/google-pubsub.service.js.map +1 -0
  113. package/dist/brokers/utils/providers/index.d.ts +6 -0
  114. package/dist/brokers/utils/providers/index.js +16 -0
  115. package/dist/brokers/utils/providers/index.js.map +1 -0
  116. package/dist/brokers/utils/providers/kafka.service.d.ts +23 -0
  117. package/dist/brokers/utils/providers/kafka.service.js +131 -0
  118. package/dist/brokers/utils/providers/kafka.service.js.map +1 -0
  119. package/dist/brokers/utils/providers/nats.service.d.ts +18 -0
  120. package/dist/brokers/utils/providers/nats.service.js +63 -0
  121. package/dist/brokers/utils/providers/nats.service.js.map +1 -0
  122. package/dist/brokers/utils/providers/rabbitmq.service.d.ts +15 -0
  123. package/dist/brokers/utils/providers/rabbitmq.service.js +151 -0
  124. package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -0
  125. package/dist/brokers/utils/providers/redis.service.d.ts +18 -0
  126. package/dist/brokers/utils/providers/redis.service.js +93 -0
  127. package/dist/brokers/utils/providers/redis.service.js.map +1 -0
  128. package/dist/cache/cache.manager.d.ts +159 -0
  129. package/dist/cache/cache.manager.js +265 -0
  130. package/dist/cache/cache.manager.js.map +1 -0
  131. package/dist/cache/cache.service.d.ts +186 -0
  132. package/dist/cache/cache.service.js +437 -0
  133. package/dist/cache/cache.service.js.map +1 -0
  134. package/dist/cache/index.d.ts +52 -0
  135. package/dist/cache/index.js +79 -0
  136. package/dist/cache/index.js.map +1 -0
  137. package/dist/cache/types/index.d.ts +106 -0
  138. package/dist/cache/types/index.js +6 -0
  139. package/dist/cache/types/index.js.map +1 -0
  140. package/dist/clients/pricing.client.d.ts +3 -0
  141. package/dist/clients/pricing.client.js +33 -0
  142. package/dist/clients/pricing.client.js.map +1 -0
  143. package/dist/database/actions/action-manager.d.ts +170 -0
  144. package/dist/database/actions/action-manager.js +465 -0
  145. package/dist/database/actions/action-manager.js.map +1 -0
  146. package/dist/database/actions/index.d.ts +6 -0
  147. package/dist/database/actions/index.js +13 -0
  148. package/dist/database/actions/index.js.map +1 -0
  149. package/dist/database/adapters/adapter.factory.d.ts +62 -0
  150. package/dist/database/adapters/adapter.factory.js +97 -0
  151. package/dist/database/adapters/adapter.factory.js.map +1 -0
  152. package/dist/database/adapters/base.adapter.d.ts +393 -0
  153. package/dist/database/adapters/base.adapter.js +150 -0
  154. package/dist/database/adapters/base.adapter.js.map +1 -0
  155. package/dist/database/adapters/cassandra.adapter.d.ts +91 -0
  156. package/dist/database/adapters/cassandra.adapter.js +1075 -0
  157. package/dist/database/adapters/cassandra.adapter.js.map +1 -0
  158. package/dist/database/adapters/dynamodb.adapter.d.ts +109 -0
  159. package/dist/database/adapters/dynamodb.adapter.js +1534 -0
  160. package/dist/database/adapters/dynamodb.adapter.js.map +1 -0
  161. package/dist/database/adapters/index.d.ts +11 -0
  162. package/dist/database/adapters/index.js +27 -0
  163. package/dist/database/adapters/index.js.map +1 -0
  164. package/dist/database/adapters/mariadb.adapter.d.ts +100 -0
  165. package/dist/database/adapters/mariadb.adapter.js +247 -0
  166. package/dist/database/adapters/mariadb.adapter.js.map +1 -0
  167. package/dist/database/adapters/mongodb.adapter.d.ts +120 -0
  168. package/dist/database/adapters/mongodb.adapter.js +1253 -0
  169. package/dist/database/adapters/mongodb.adapter.js.map +1 -0
  170. package/dist/database/adapters/mysql.adapter.d.ts +85 -0
  171. package/dist/database/adapters/mysql.adapter.js +1313 -0
  172. package/dist/database/adapters/mysql.adapter.js.map +1 -0
  173. package/dist/database/adapters/postgresql.adapter.d.ts +88 -0
  174. package/dist/database/adapters/postgresql.adapter.js +1434 -0
  175. package/dist/database/adapters/postgresql.adapter.js.map +1 -0
  176. package/dist/database/databases.service.d.ts +1388 -0
  177. package/dist/database/databases.service.js +2821 -0
  178. package/dist/database/databases.service.js.map +1 -0
  179. package/dist/database/index.d.ts +46 -0
  180. package/dist/database/index.js +109 -0
  181. package/dist/database/index.js.map +1 -0
  182. package/dist/database/migrations/index.d.ts +6 -0
  183. package/dist/database/migrations/index.js +12 -0
  184. package/dist/database/migrations/index.js.map +1 -0
  185. package/dist/database/migrations/migration-engine.d.ts +132 -0
  186. package/dist/database/migrations/migration-engine.js +1356 -0
  187. package/dist/database/migrations/migration-engine.js.map +1 -0
  188. package/dist/database/operators/aggregation-builder.d.ts +67 -0
  189. package/dist/database/operators/aggregation-builder.js +841 -0
  190. package/dist/database/operators/aggregation-builder.js.map +1 -0
  191. package/dist/database/operators/index.d.ts +7 -0
  192. package/dist/database/operators/index.js +15 -0
  193. package/dist/database/operators/index.js.map +1 -0
  194. package/dist/database/operators/query-builder.d.ts +59 -0
  195. package/dist/database/operators/query-builder.js +397 -0
  196. package/dist/database/operators/query-builder.js.map +1 -0
  197. package/dist/database/presave/decrypt.d.ts +25 -0
  198. package/dist/database/presave/decrypt.js +146 -0
  199. package/dist/database/presave/decrypt.js.map +1 -0
  200. package/dist/database/presave/index.d.ts +9 -0
  201. package/dist/database/presave/index.js +18 -0
  202. package/dist/database/presave/index.js.map +1 -0
  203. package/dist/database/presave/presave-processor.d.ts +148 -0
  204. package/dist/database/presave/presave-processor.js +702 -0
  205. package/dist/database/presave/presave-processor.js.map +1 -0
  206. package/dist/database/schema/index.d.ts +7 -0
  207. package/dist/database/schema/index.js +13 -0
  208. package/dist/database/schema/index.js.map +1 -0
  209. package/dist/database/schema/schema-manager.d.ts +258 -0
  210. package/dist/database/schema/schema-manager.js +637 -0
  211. package/dist/database/schema/schema-manager.js.map +1 -0
  212. package/dist/database/transactions/index.d.ts +6 -0
  213. package/dist/database/transactions/index.js +13 -0
  214. package/dist/database/transactions/index.js.map +1 -0
  215. package/dist/database/transactions/transaction-manager.d.ts +113 -0
  216. package/dist/database/transactions/transaction-manager.js +344 -0
  217. package/dist/database/transactions/transaction-manager.js.map +1 -0
  218. package/dist/database/triggers/index.d.ts +7 -0
  219. package/dist/database/triggers/index.js +14 -0
  220. package/dist/database/triggers/index.js.map +1 -0
  221. package/dist/database/triggers/trigger-processor.d.ts +239 -0
  222. package/dist/database/triggers/trigger-processor.js +1034 -0
  223. package/dist/database/triggers/trigger-processor.js.map +1 -0
  224. package/dist/database/types/action.interface.d.ts +148 -0
  225. package/dist/database/types/action.interface.js +6 -0
  226. package/dist/database/types/action.interface.js.map +1 -0
  227. package/dist/database/types/aggregation.interface.d.ts +185 -0
  228. package/dist/database/types/aggregation.interface.js +6 -0
  229. package/dist/database/types/aggregation.interface.js.map +1 -0
  230. package/dist/database/types/connection.interface.d.ts +137 -0
  231. package/dist/database/types/connection.interface.js +6 -0
  232. package/dist/database/types/connection.interface.js.map +1 -0
  233. package/dist/database/types/enums.d.ts +195 -0
  234. package/dist/database/types/enums.js +244 -0
  235. package/dist/database/types/enums.js.map +1 -0
  236. package/dist/database/types/index.d.ts +14 -0
  237. package/dist/database/types/index.js +31 -0
  238. package/dist/database/types/index.js.map +1 -0
  239. package/dist/database/types/migration.interface.d.ts +686 -0
  240. package/dist/database/types/migration.interface.js +9 -0
  241. package/dist/database/types/migration.interface.js.map +1 -0
  242. package/dist/database/types/presave.interface.d.ts +292 -0
  243. package/dist/database/types/presave.interface.js +60 -0
  244. package/dist/database/types/presave.interface.js.map +1 -0
  245. package/dist/database/types/query.interface.d.ts +205 -0
  246. package/dist/database/types/query.interface.js +6 -0
  247. package/dist/database/types/query.interface.js.map +1 -0
  248. package/dist/database/types/schema.interface.d.ts +398 -0
  249. package/dist/database/types/schema.interface.js +6 -0
  250. package/dist/database/types/schema.interface.js.map +1 -0
  251. package/dist/database/types/transaction.interface.d.ts +84 -0
  252. package/dist/database/types/transaction.interface.js +6 -0
  253. package/dist/database/types/transaction.interface.js.map +1 -0
  254. package/dist/database/types/trigger.interface.d.ts +612 -0
  255. package/dist/database/types/trigger.interface.js +121 -0
  256. package/dist/database/types/trigger.interface.js.map +1 -0
  257. package/dist/database/types/write.interface.d.ts +216 -0
  258. package/dist/database/types/write.interface.js +6 -0
  259. package/dist/database/types/write.interface.js.map +1 -0
  260. package/dist/database/utils/database-error.d.ts +96 -0
  261. package/dist/database/utils/database-error.js +221 -0
  262. package/dist/database/utils/database-error.js.map +1 -0
  263. package/dist/database/utils/index.d.ts +6 -0
  264. package/dist/database/utils/index.js +11 -0
  265. package/dist/database/utils/index.js.map +1 -0
  266. package/dist/graph/adapters/adapter.factory.d.ts +47 -0
  267. package/dist/graph/adapters/adapter.factory.js +77 -0
  268. package/dist/graph/adapters/adapter.factory.js.map +1 -0
  269. package/dist/graph/adapters/arangodb.adapter.d.ts +86 -0
  270. package/dist/graph/adapters/arangodb.adapter.js +1522 -0
  271. package/dist/graph/adapters/arangodb.adapter.js.map +1 -0
  272. package/dist/graph/adapters/base.adapter.d.ts +245 -0
  273. package/dist/graph/adapters/base.adapter.js +64 -0
  274. package/dist/graph/adapters/base.adapter.js.map +1 -0
  275. package/dist/graph/adapters/index.d.ts +11 -0
  276. package/dist/graph/adapters/index.js +21 -0
  277. package/dist/graph/adapters/index.js.map +1 -0
  278. package/dist/graph/adapters/memgraph.adapter.d.ts +110 -0
  279. package/dist/graph/adapters/memgraph.adapter.js +1345 -0
  280. package/dist/graph/adapters/memgraph.adapter.js.map +1 -0
  281. package/dist/graph/adapters/neo4j.adapter.d.ts +81 -0
  282. package/dist/graph/adapters/neo4j.adapter.js +1198 -0
  283. package/dist/graph/adapters/neo4j.adapter.js.map +1 -0
  284. package/dist/graph/adapters/neptune.adapter.d.ts +82 -0
  285. package/dist/graph/adapters/neptune.adapter.js +1313 -0
  286. package/dist/graph/adapters/neptune.adapter.js.map +1 -0
  287. package/dist/graph/graphs.service.d.ts +546 -0
  288. package/dist/graph/graphs.service.js +1893 -0
  289. package/dist/graph/graphs.service.js.map +1 -0
  290. package/dist/graph/index.d.ts +57 -0
  291. package/dist/graph/index.js +77 -0
  292. package/dist/graph/index.js.map +1 -0
  293. package/dist/graph/transactions/index.d.ts +4 -0
  294. package/dist/graph/transactions/index.js +9 -0
  295. package/dist/graph/transactions/index.js.map +1 -0
  296. package/dist/graph/transactions/transaction-manager.d.ts +61 -0
  297. package/dist/graph/transactions/transaction-manager.js +126 -0
  298. package/dist/graph/transactions/transaction-manager.js.map +1 -0
  299. package/dist/graph/types/connection.interface.d.ts +149 -0
  300. package/dist/graph/types/connection.interface.js +9 -0
  301. package/dist/graph/types/connection.interface.js.map +1 -0
  302. package/dist/graph/types/enums.d.ts +101 -0
  303. package/dist/graph/types/enums.js +114 -0
  304. package/dist/graph/types/enums.js.map +1 -0
  305. package/dist/graph/types/index.d.ts +13 -0
  306. package/dist/graph/types/index.js +20 -0
  307. package/dist/graph/types/index.js.map +1 -0
  308. package/dist/graph/types/node.interface.d.ts +248 -0
  309. package/dist/graph/types/node.interface.js +9 -0
  310. package/dist/graph/types/node.interface.js.map +1 -0
  311. package/dist/graph/types/query.interface.d.ts +175 -0
  312. package/dist/graph/types/query.interface.js +9 -0
  313. package/dist/graph/types/query.interface.js.map +1 -0
  314. package/dist/graph/types/relationship.interface.d.ts +207 -0
  315. package/dist/graph/types/relationship.interface.js +9 -0
  316. package/dist/graph/types/relationship.interface.js.map +1 -0
  317. package/dist/graph/types/schema.interface.d.ts +295 -0
  318. package/dist/graph/types/schema.interface.js +9 -0
  319. package/dist/graph/types/schema.interface.js.map +1 -0
  320. package/dist/graph/types/transaction.interface.d.ts +55 -0
  321. package/dist/graph/types/transaction.interface.js +9 -0
  322. package/dist/graph/types/transaction.interface.js.map +1 -0
  323. package/dist/graph/types/traversal.interface.d.ts +181 -0
  324. package/dist/graph/types/traversal.interface.js +9 -0
  325. package/dist/graph/types/traversal.interface.js.map +1 -0
  326. package/dist/graph/utils/graph-error.d.ts +71 -0
  327. package/dist/graph/utils/graph-error.js +142 -0
  328. package/dist/graph/utils/graph-error.js.map +1 -0
  329. package/dist/graph/utils/index.d.ts +4 -0
  330. package/dist/graph/utils/index.js +9 -0
  331. package/dist/graph/utils/index.js.map +1 -0
  332. package/dist/imports/imports.service.d.ts +3 -3
  333. package/dist/imports/imports.service.js +8 -7
  334. package/dist/imports/imports.service.js.map +1 -1
  335. package/dist/imports/imports.types.d.ts +8 -0
  336. package/dist/imports/repos/openApi.repo.d.ts +1 -1
  337. package/dist/imports/repos/openApi.repo.js +414 -47
  338. package/dist/imports/repos/openApi.repo.js.map +1 -1
  339. package/dist/imports/repos/postmanV21.repo.d.ts +1 -1
  340. package/dist/imports/repos/postmanV21.repo.js +126 -83
  341. package/dist/imports/repos/postmanV21.repo.js.map +1 -1
  342. package/dist/index.d.ts +3241 -285
  343. package/dist/index.js +4711 -687
  344. package/dist/index.js.map +1 -1
  345. package/dist/init.interface.d.ts +407 -0
  346. package/dist/init.interface.js +3 -0
  347. package/dist/init.interface.js.map +1 -0
  348. package/dist/inputs/inputs.service.d.ts +1 -1
  349. package/dist/inputs/inputs.service.js +2 -2
  350. package/dist/inputs/inputs.service.js.map +1 -1
  351. package/dist/inputs/utils/inputs.utils.create.js +1 -1
  352. package/dist/inputs/utils/inputs.utils.create.js.map +1 -1
  353. package/dist/jobs/index.d.ts +38 -0
  354. package/dist/jobs/index.js +50 -0
  355. package/dist/jobs/index.js.map +1 -0
  356. package/dist/jobs/jobs.service.d.ts +154 -0
  357. package/dist/jobs/jobs.service.js +491 -0
  358. package/dist/jobs/jobs.service.js.map +1 -0
  359. package/dist/jobs/jobs.state.d.ts +113 -0
  360. package/dist/jobs/jobs.state.js +447 -0
  361. package/dist/jobs/jobs.state.js.map +1 -0
  362. package/dist/jobs/types.d.ts +449 -0
  363. package/dist/jobs/types.js +74 -0
  364. package/dist/jobs/types.js.map +1 -0
  365. package/dist/logs/logs.types.d.ts +16 -1
  366. package/dist/logs/logs.types.js +5 -0
  367. package/dist/logs/logs.types.js.map +1 -1
  368. package/dist/models/index.d.ts +6 -0
  369. package/dist/models/index.js +11 -0
  370. package/dist/models/index.js.map +1 -0
  371. package/dist/models/models.service.d.ts +137 -0
  372. package/dist/models/models.service.js +195 -0
  373. package/dist/models/models.service.js.map +1 -0
  374. package/dist/notifications/index.d.ts +13 -0
  375. package/dist/notifications/index.js +26 -0
  376. package/dist/notifications/index.js.map +1 -0
  377. package/dist/notifications/notifications.service.d.ts +257 -0
  378. package/dist/notifications/notifications.service.js +656 -0
  379. package/dist/notifications/notifications.service.js.map +1 -0
  380. package/dist/notifications/types/index.d.ts +4 -0
  381. package/dist/notifications/types/index.js +21 -0
  382. package/dist/notifications/types/index.js.map +1 -0
  383. package/dist/notifications/types/notifications.types.d.ts +400 -0
  384. package/dist/notifications/types/notifications.types.js +49 -0
  385. package/dist/notifications/types/notifications.types.js.map +1 -0
  386. package/dist/parsers/index.d.ts +3 -0
  387. package/dist/parsers/index.js +27 -0
  388. package/dist/parsers/index.js.map +1 -0
  389. package/dist/parsers/pipelines/postman.pipelines.d.ts +15 -0
  390. package/dist/parsers/pipelines/postman.pipelines.js +103 -0
  391. package/dist/parsers/pipelines/postman.pipelines.js.map +1 -0
  392. package/dist/parsers/types/postman.types.d.ts +200 -0
  393. package/dist/parsers/types/postman.types.js +3 -0
  394. package/dist/parsers/types/postman.types.js.map +1 -0
  395. package/dist/parsers/utils/postman.utils.d.ts +12 -0
  396. package/dist/parsers/utils/postman.utils.js +116 -0
  397. package/dist/parsers/utils/postman.utils.js.map +1 -0
  398. package/dist/parsers/validators/postman-auth.validators.d.ts +10 -0
  399. package/dist/parsers/validators/postman-auth.validators.js +127 -0
  400. package/dist/parsers/validators/postman-auth.validators.js.map +1 -0
  401. package/dist/parsers/validators/postman-request.validators.d.ts +13 -0
  402. package/dist/parsers/validators/postman-request.validators.js +139 -0
  403. package/dist/parsers/validators/postman-request.validators.js.map +1 -0
  404. package/dist/parsers/validators/postman-response.validators.d.ts +13 -0
  405. package/dist/parsers/validators/postman-response.validators.js +150 -0
  406. package/dist/parsers/validators/postman-response.validators.js.map +1 -0
  407. package/dist/parsers/validators/postman-variable.validators.d.ts +14 -0
  408. package/dist/parsers/validators/postman-variable.validators.js +163 -0
  409. package/dist/parsers/validators/postman-variable.validators.js.map +1 -0
  410. package/dist/pricing/pricing.repo.js +1 -0
  411. package/dist/pricing/pricing.repo.js.map +1 -0
  412. package/dist/pricing/pricing.service.d.ts +24 -0
  413. package/dist/pricing/pricing.service.js +51 -0
  414. package/dist/pricing/pricing.service.js.map +1 -0
  415. package/dist/pricing/pricing.types.d.ts +76 -0
  416. package/dist/pricing/pricing.types.js +21 -0
  417. package/dist/pricing/pricing.types.js.map +1 -0
  418. package/dist/pricing/utils/string.utils.d.ts +1 -0
  419. package/dist/pricing/utils/string.utils.js +9 -0
  420. package/dist/pricing/utils/string.utils.js.map +1 -0
  421. package/dist/processor/services/processor.service.d.ts +120 -73
  422. package/dist/processor/services/processor.service.js +1705 -1294
  423. package/dist/processor/services/processor.service.js.map +1 -1
  424. package/dist/processor/services/request.service.d.ts +36 -0
  425. package/dist/processor/services/request.service.js +304 -0
  426. package/dist/processor/services/request.service.js.map +1 -0
  427. package/dist/processor/types/request.types.d.ts +14 -0
  428. package/dist/processor/types/request.types.js +3 -0
  429. package/dist/processor/types/request.types.js.map +1 -0
  430. package/dist/processor/utils/processor.utils.d.ts +3 -0
  431. package/dist/processor/utils/processor.utils.js +87 -21
  432. package/dist/processor/utils/processor.utils.js.map +1 -1
  433. package/dist/processor/utils/request.utils.d.ts +20 -0
  434. package/dist/processor/utils/request.utils.js +113 -0
  435. package/dist/processor/utils/request.utils.js.map +1 -0
  436. package/dist/products/services/products.service.d.ts +330 -77
  437. package/dist/products/services/products.service.js +2586 -397
  438. package/dist/products/services/products.service.js.map +1 -1
  439. package/dist/products/utils/string.utils.d.ts +1 -1
  440. package/dist/products/utils/string.utils.js +14 -2
  441. package/dist/products/utils/string.utils.js.map +1 -1
  442. package/dist/products/validators/index.d.ts +7 -1
  443. package/dist/products/validators/index.js +16 -1
  444. package/dist/products/validators/index.js.map +1 -1
  445. package/dist/products/validators/joi-validators/create.productAgent.validator.d.ts +3 -0
  446. package/dist/products/validators/joi-validators/create.productAgent.validator.js +266 -0
  447. package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -0
  448. package/dist/products/validators/joi-validators/create.productDatabase.validator.js +5 -0
  449. package/dist/products/validators/joi-validators/create.productDatabase.validator.js.map +1 -1
  450. package/dist/products/validators/joi-validators/create.productEnv.validator.js +1 -0
  451. package/dist/products/validators/joi-validators/create.productEnv.validator.js.map +1 -1
  452. package/dist/products/validators/joi-validators/create.productGraph.validator.js +89 -0
  453. package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -0
  454. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.d.ts +4 -0
  455. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js +58 -0
  456. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js.map +1 -0
  457. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +81 -25
  458. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
  459. package/dist/products/validators/joi-validators/create.productModel.validator.d.ts +3 -0
  460. package/dist/products/validators/joi-validators/create.productModel.validator.js +132 -0
  461. package/dist/products/validators/joi-validators/create.productModel.validator.js.map +1 -0
  462. package/dist/products/validators/joi-validators/create.productNotification.validator.js +133 -45
  463. package/dist/products/validators/joi-validators/create.productNotification.validator.js.map +1 -1
  464. package/dist/products/validators/joi-validators/create.productStorage.validator.js +77 -18
  465. package/dist/products/validators/joi-validators/create.productStorage.validator.js.map +1 -1
  466. package/dist/products/validators/joi-validators/create.productVector.validator.d.ts +3 -0
  467. package/dist/products/validators/joi-validators/create.productVector.validator.js +135 -0
  468. package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -0
  469. package/dist/products/validators/joi-validators/update.dataValue.validator.js +1 -0
  470. package/dist/products/validators/joi-validators/update.dataValue.validator.js.map +1 -1
  471. package/dist/products/validators/joi-validators/update.productDatabase.validator.js +5 -0
  472. package/dist/products/validators/joi-validators/update.productDatabase.validator.js.map +1 -1
  473. package/dist/products/validators/joi-validators/update.productEnv.validator.js +3 -0
  474. package/dist/products/validators/joi-validators/update.productEnv.validator.js.map +1 -1
  475. package/dist/products/validators/joi-validators/update.productGraph.validator.js +88 -0
  476. package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -0
  477. package/dist/resilience/fallback.service.d.ts +140 -0
  478. package/dist/resilience/fallback.service.js +764 -0
  479. package/dist/resilience/fallback.service.js.map +1 -0
  480. package/dist/resilience/healthcheck.service.d.ts +159 -0
  481. package/dist/resilience/healthcheck.service.js +943 -0
  482. package/dist/resilience/healthcheck.service.js.map +1 -0
  483. package/dist/resilience/index.d.ts +104 -0
  484. package/dist/resilience/index.js +140 -0
  485. package/dist/resilience/index.js.map +1 -0
  486. package/dist/resilience/quota.service.d.ts +82 -0
  487. package/dist/resilience/quota.service.js +516 -0
  488. package/dist/resilience/quota.service.js.map +1 -0
  489. package/dist/resilience/resilience.service.d.ts +98 -0
  490. package/dist/resilience/resilience.service.js +560 -0
  491. package/dist/resilience/resilience.service.js.map +1 -0
  492. package/dist/resilience/types/index.d.ts +513 -0
  493. package/dist/resilience/types/index.js +29 -0
  494. package/dist/resilience/types/index.js.map +1 -0
  495. package/dist/secrets/index.d.ts +10 -0
  496. package/dist/secrets/index.js +33 -0
  497. package/dist/secrets/index.js.map +1 -0
  498. package/dist/secrets/secrets.resolver.d.ts +52 -0
  499. package/dist/secrets/secrets.resolver.js +233 -0
  500. package/dist/secrets/secrets.resolver.js.map +1 -0
  501. package/dist/secrets/secrets.service.d.ts +93 -0
  502. package/dist/secrets/secrets.service.js +258 -0
  503. package/dist/secrets/secrets.service.js.map +1 -0
  504. package/dist/secrets/secrets.types.d.ts +188 -0
  505. package/dist/secrets/secrets.types.js +87 -0
  506. package/dist/secrets/secrets.types.js.map +1 -0
  507. package/dist/sessions/index.d.ts +50 -0
  508. package/dist/sessions/index.js +93 -0
  509. package/dist/sessions/index.js.map +1 -0
  510. package/dist/sessions/sessions.helper.d.ts +68 -0
  511. package/dist/sessions/sessions.helper.js +116 -0
  512. package/dist/sessions/sessions.helper.js.map +1 -0
  513. package/dist/sessions/sessions.resolver.d.ts +150 -0
  514. package/dist/sessions/sessions.resolver.js +356 -0
  515. package/dist/sessions/sessions.resolver.js.map +1 -0
  516. package/dist/sessions/sessions.service.d.ts +170 -0
  517. package/dist/sessions/sessions.service.js +736 -0
  518. package/dist/sessions/sessions.service.js.map +1 -0
  519. package/dist/sessions/types/index.d.ts +290 -0
  520. package/dist/sessions/types/index.js +6 -0
  521. package/dist/sessions/types/index.js.map +1 -0
  522. package/dist/storage/index.d.ts +66 -0
  523. package/dist/storage/index.js +98 -0
  524. package/dist/storage/index.js.map +1 -0
  525. package/dist/storage/storage.service.d.ts +151 -0
  526. package/dist/storage/storage.service.js +522 -0
  527. package/dist/storage/storage.service.js.map +1 -0
  528. package/dist/storage/types/index.d.ts +207 -0
  529. package/dist/storage/types/index.js +6 -0
  530. package/dist/storage/types/index.js.map +1 -0
  531. package/dist/storage/utils/storage.util.d.ts +51 -0
  532. package/dist/storage/utils/storage.util.js +402 -0
  533. package/dist/storage/utils/storage.util.js.map +1 -0
  534. package/dist/test/index.d.ts +3 -0
  535. package/dist/test/index.js +11 -0
  536. package/dist/test/index.js.map +1 -0
  537. package/dist/test/test.appBuilder.d.ts +0 -1
  538. package/dist/test/test.appBuilder.js +0 -15
  539. package/dist/test/test.appBuilder.js.map +1 -1
  540. package/dist/test/test.broker.kafka.js +172 -0
  541. package/dist/test/test.broker.kafka.js.map +1 -0
  542. package/dist/test/test.broker.nats.js +193 -0
  543. package/dist/test/test.broker.nats.js.map +1 -0
  544. package/dist/test/test.broker.pubsub.js +171 -0
  545. package/dist/test/test.broker.pubsub.js.map +1 -0
  546. package/dist/test/test.broker.rabbitmq.js +164 -0
  547. package/dist/test/test.broker.rabbitmq.js.map +1 -0
  548. package/dist/test/test.broker.redis.js +168 -0
  549. package/dist/test/test.broker.redis.js.map +1 -0
  550. package/dist/test/test.broker.sqs.d.ts +1 -0
  551. package/dist/test/test.broker.sqs.js +158 -0
  552. package/dist/test/test.broker.sqs.js.map +1 -0
  553. package/dist/test/test.caches.d.ts +1 -0
  554. package/dist/test/test.caches.js +231 -0
  555. package/dist/test/test.caches.js.map +1 -0
  556. package/dist/test/test.database.d.ts +1 -0
  557. package/dist/test/test.database.dynamo.d.ts +1 -0
  558. package/dist/test/test.database.dynamo.js +265 -0
  559. package/dist/test/test.database.dynamo.js.map +1 -0
  560. package/dist/test/test.database.js +140 -0
  561. package/dist/test/test.database.js.map +1 -0
  562. package/dist/test/test.database.mongo.d.ts +1 -0
  563. package/dist/test/test.database.mongo.js +371 -0
  564. package/dist/test/test.database.mongo.js.map +1 -0
  565. package/dist/test/test.database.mysql.d.ts +1 -0
  566. package/dist/test/test.database.mysql.js +415 -0
  567. package/dist/test/test.database.mysql.js.map +1 -0
  568. package/dist/test/test.database.postgres.d.ts +1 -0
  569. package/dist/test/test.database.postgres.js +412 -0
  570. package/dist/test/test.database.postgres.js.map +1 -0
  571. package/dist/test/test.email.brevo.d.ts +1 -0
  572. package/dist/test/test.email.brevo.js +326 -0
  573. package/dist/test/test.email.brevo.js.map +1 -0
  574. package/dist/test/test.email.mailgun.d.ts +1 -0
  575. package/dist/test/test.email.mailgun.js +352 -0
  576. package/dist/test/test.email.mailgun.js.map +1 -0
  577. package/dist/test/test.email.postmark.d.ts +1 -0
  578. package/dist/test/test.email.postmark.js +316 -0
  579. package/dist/test/test.email.postmark.js.map +1 -0
  580. package/dist/test/test.email.sendgrid.d.ts +1 -0
  581. package/dist/test/test.email.sendgrid.js +365 -0
  582. package/dist/test/test.email.sendgrid.js.map +1 -0
  583. package/dist/test/test.email.smtp.d.ts +1 -0
  584. package/dist/test/test.email.smtp.js +323 -0
  585. package/dist/test/test.email.smtp.js.map +1 -0
  586. package/dist/test/test.graph.arangodb.d.ts +1 -0
  587. package/dist/test/test.graph.arangodb.js +358 -0
  588. package/dist/test/test.graph.arangodb.js.map +1 -0
  589. package/dist/test/test.graph.memgraph.d.ts +1 -0
  590. package/dist/test/test.graph.memgraph.js +320 -0
  591. package/dist/test/test.graph.memgraph.js.map +1 -0
  592. package/dist/test/test.graph.neo4j.d.ts +1 -0
  593. package/dist/test/test.graph.neo4j.js +218 -0
  594. package/dist/test/test.graph.neo4j.js.map +1 -0
  595. package/dist/test/test.graph.neptune.d.ts +1 -0
  596. package/dist/test/test.graph.neptune.js +331 -0
  597. package/dist/test/test.graph.neptune.js.map +1 -0
  598. package/dist/test/test.health.js +1 -0
  599. package/dist/test/test.health.js.map +1 -0
  600. package/dist/test/test.import.d.ts +0 -1
  601. package/dist/test/test.import.js +0 -1459
  602. package/dist/test/test.import.js.map +1 -1
  603. package/dist/test/test.import.openapi.d.ts +0 -1
  604. package/dist/test/test.import.openapi.js +0 -75
  605. package/dist/test/test.import.openapi.js.map +1 -1
  606. package/dist/test/test.imports.js +14 -55
  607. package/dist/test/test.imports.js.map +1 -1
  608. package/dist/test/test.logs.d.ts +0 -1
  609. package/dist/test/test.logs.js +0 -17
  610. package/dist/test/test.logs.js.map +1 -1
  611. package/dist/test/test.notifications.d.ts +1 -0
  612. package/dist/test/test.notifications.js +198 -0
  613. package/dist/test/test.notifications.js.map +1 -0
  614. package/dist/test/test.notifiers.js +1 -0
  615. package/dist/test/test.notifiers.js.map +1 -0
  616. package/dist/test/test.processor.d.ts +0 -1
  617. package/dist/test/test.processor.js +0 -122
  618. package/dist/test/test.processor.js.map +1 -1
  619. package/dist/test/test.productBuilder.d.ts +0 -1
  620. package/dist/test/test.productBuilder.js +0 -660
  621. package/dist/test/test.productBuilder.js.map +1 -1
  622. package/dist/test/test.products.js +1 -0
  623. package/dist/test/test.products.js.map +1 -0
  624. package/dist/test/test.push.expo.d.ts +1 -0
  625. package/dist/test/test.push.expo.js +442 -0
  626. package/dist/test/test.push.expo.js.map +1 -0
  627. package/dist/test/test.push.firebase.d.ts +1 -0
  628. package/dist/test/test.push.firebase.js +409 -0
  629. package/dist/test/test.push.firebase.js.map +1 -0
  630. package/dist/test/test.session.d.ts +1 -0
  631. package/dist/test/test.session.js +299 -0
  632. package/dist/test/test.session.js.map +1 -0
  633. package/dist/test/test.sms.nexmo.d.ts +1 -0
  634. package/dist/test/test.sms.nexmo.js +278 -0
  635. package/dist/test/test.sms.nexmo.js.map +1 -0
  636. package/dist/test/test.sms.twilio.d.ts +1 -0
  637. package/dist/test/test.sms.twilio.js +275 -0
  638. package/dist/test/test.sms.twilio.js.map +1 -0
  639. package/dist/test/test.storage.d.ts +1 -0
  640. package/dist/test/test.storage.js +202 -0
  641. package/dist/test/test.storage.js.map +1 -0
  642. package/dist/test/test.triggers.d.ts +1 -0
  643. package/dist/test/test.triggers.js +314 -0
  644. package/dist/test/test.triggers.js.map +1 -0
  645. package/dist/test/test.vector.pinecone.d.ts +1 -0
  646. package/dist/test/test.vector.pinecone.js +238 -0
  647. package/dist/test/test.vector.pinecone.js.map +1 -0
  648. package/dist/test/test.vector.qdrant.d.ts +1 -0
  649. package/dist/test/test.vector.qdrant.js +307 -0
  650. package/dist/test/test.vector.qdrant.js.map +1 -0
  651. package/dist/test/test.vector.weaviate.d.ts +1 -0
  652. package/dist/test/test.vector.weaviate.js +325 -0
  653. package/dist/test/test.vector.weaviate.js.map +1 -0
  654. package/dist/types/appBuilder.types.d.ts +10 -13
  655. package/dist/types/enums.d.ts +11 -1
  656. package/dist/types/enums.js +10 -0
  657. package/dist/types/enums.js.map +1 -1
  658. package/dist/types/index.types.d.ts +6 -4
  659. package/dist/types/index.types.js +0 -1
  660. package/dist/types/index.types.js.map +1 -1
  661. package/dist/types/pricing.types.d.ts +4 -0
  662. package/dist/types/pricing.types.js +3 -0
  663. package/dist/types/pricing.types.js.map +1 -0
  664. package/dist/types/processor.types.d.ts +245 -20
  665. package/dist/types/processor.types.js +9 -1
  666. package/dist/types/processor.types.js.map +1 -1
  667. package/dist/types/productsBuilder.types.d.ts +906 -24
  668. package/dist/types/productsBuilder.types.js +173 -2
  669. package/dist/types/productsBuilder.types.js.map +1 -1
  670. package/dist/types/request-tracker.interface.js +1 -0
  671. package/dist/types/request-tracker.interface.js.map +1 -0
  672. package/dist/types/requests.types.d.ts +2 -0
  673. package/dist/utils/constants.d.ts +1 -0
  674. package/dist/utils/constants.js +5 -0
  675. package/dist/utils/constants.js.map +1 -0
  676. package/dist/utils/index.d.ts +0 -2
  677. package/dist/utils/index.js +24 -52
  678. package/dist/utils/index.js.map +1 -1
  679. package/dist/vector/adapters/base.adapter.d.ts +152 -0
  680. package/dist/vector/adapters/base.adapter.js +137 -0
  681. package/dist/vector/adapters/base.adapter.js.map +1 -0
  682. package/dist/vector/adapters/index.d.ts +10 -0
  683. package/dist/vector/adapters/index.js +19 -0
  684. package/dist/vector/adapters/index.js.map +1 -0
  685. package/dist/vector/adapters/memory.adapter.d.ts +85 -0
  686. package/dist/vector/adapters/memory.adapter.js +505 -0
  687. package/dist/vector/adapters/memory.adapter.js.map +1 -0
  688. package/dist/vector/adapters/pinecone.adapter.d.ts +52 -0
  689. package/dist/vector/adapters/pinecone.adapter.js +400 -0
  690. package/dist/vector/adapters/pinecone.adapter.js.map +1 -0
  691. package/dist/vector/adapters/qdrant.adapter.d.ts +56 -0
  692. package/dist/vector/adapters/qdrant.adapter.js +392 -0
  693. package/dist/vector/adapters/qdrant.adapter.js.map +1 -0
  694. package/dist/vector/adapters/weaviate.adapter.d.ts +64 -0
  695. package/dist/vector/adapters/weaviate.adapter.js +478 -0
  696. package/dist/vector/adapters/weaviate.adapter.js.map +1 -0
  697. package/dist/vector/index.d.ts +47 -0
  698. package/dist/vector/index.js +72 -0
  699. package/dist/vector/index.js.map +1 -0
  700. package/dist/vector/types/connection.interface.d.ts +151 -0
  701. package/dist/vector/types/connection.interface.js +8 -0
  702. package/dist/vector/types/connection.interface.js.map +1 -0
  703. package/dist/vector/types/embedding.interface.d.ts +144 -0
  704. package/dist/vector/types/embedding.interface.js +8 -0
  705. package/dist/vector/types/embedding.interface.js.map +1 -0
  706. package/dist/vector/types/enums.d.ts +104 -0
  707. package/dist/vector/types/enums.js +113 -0
  708. package/dist/vector/types/enums.js.map +1 -0
  709. package/dist/vector/types/index.d.ts +9 -0
  710. package/dist/vector/types/index.js +16 -0
  711. package/dist/vector/types/index.js.map +1 -0
  712. package/dist/vector/types/vector.interface.d.ts +315 -0
  713. package/dist/vector/types/vector.interface.js +8 -0
  714. package/dist/vector/types/vector.interface.js.map +1 -0
  715. package/dist/vector/utils/index.d.ts +6 -0
  716. package/dist/vector/utils/index.js +11 -0
  717. package/dist/vector/utils/index.js.map +1 -0
  718. package/dist/vector/utils/vector-error.d.ts +69 -0
  719. package/dist/vector/utils/vector-error.js +116 -0
  720. package/dist/vector/utils/vector-error.js.map +1 -0
  721. package/dist/vector/vector-database.service.d.ts +408 -0
  722. package/dist/vector/vector-database.service.js +545 -0
  723. package/dist/vector/vector-database.service.js.map +1 -0
  724. package/dist/vector/vector.service.d.ts +245 -0
  725. package/dist/vector/vector.service.js +384 -0
  726. package/dist/vector/vector.service.js.map +1 -0
  727. package/dist/workflows/index.d.ts +30 -0
  728. package/dist/workflows/index.js +64 -0
  729. package/dist/workflows/index.js.map +1 -0
  730. package/dist/workflows/types/index.d.ts +6 -0
  731. package/dist/workflows/types/index.js +23 -0
  732. package/dist/workflows/types/index.js.map +1 -0
  733. package/dist/workflows/types/workflows.types.d.ts +1035 -0
  734. package/dist/workflows/types/workflows.types.js +13 -0
  735. package/dist/workflows/types/workflows.types.js.map +1 -0
  736. package/dist/workflows/workflow-builder.d.ts +70 -0
  737. package/dist/workflows/workflow-builder.js +338 -0
  738. package/dist/workflows/workflow-builder.js.map +1 -0
  739. package/dist/workflows/workflow-executor.d.ts +208 -0
  740. package/dist/workflows/workflow-executor.js +1194 -0
  741. package/dist/workflows/workflow-executor.js.map +1 -0
  742. package/dist/workflows/workflows.service.d.ts +404 -0
  743. package/dist/workflows/workflows.service.js +1620 -0
  744. package/dist/workflows/workflows.service.js.map +1 -0
  745. package/package.json +54 -11
  746. package/dist/actions/actions.repo.js +0 -13
  747. package/dist/actions/actions.repo.js.map +0 -1
  748. package/dist/actions/actions.service.js +0 -24
  749. package/dist/actions/actions.service.js.map +0 -1
  750. package/dist/actions/utils/actions.util.read.js +0 -427
  751. package/dist/actions/utils/actions.util.read.js.map +0 -1
  752. package/dist/api/services/integrationsApi.service.d.ts +0 -18
  753. package/dist/api/services/integrationsApi.service.js +0 -80
  754. package/dist/api/services/integrationsApi.service.js.map +0 -1
  755. package/dist/appBuilder/services/app.service.d.ts +0 -111
  756. package/dist/appBuilder/services/app.service.js +0 -737
  757. package/dist/appBuilder/services/app.service.js.map +0 -1
  758. package/dist/appBuilder/services/appBuilder.service.d.ts +0 -111
  759. package/dist/appBuilder/services/appBuilder.service.js +0 -662
  760. package/dist/appBuilder/services/appBuilder.service.js.map +0 -1
  761. package/dist/appBuilder/utils/objects.utils.d.ts +0 -3
  762. package/dist/appBuilder/utils/objects.utils.js +0 -9
  763. package/dist/appBuilder/utils/objects.utils.js.map +0 -1
  764. package/dist/appBuilder/utils/string.utils.d.ts +0 -2
  765. package/dist/appBuilder/utils/string.utils.js +0 -57
  766. package/dist/appBuilder/utils/string.utils.js.map +0 -1
  767. package/dist/appBuilder/validators/index.d.ts +0 -19
  768. package/dist/appBuilder/validators/index.js +0 -40
  769. package/dist/appBuilder/validators/index.js.map +0 -1
  770. package/dist/appBuilder/validators/joi-validators/create.app.validator.js +0 -10
  771. package/dist/appBuilder/validators/joi-validators/create.app.validator.js.map +0 -1
  772. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.d.ts +0 -4
  773. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js +0 -20
  774. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js.map +0 -1
  775. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.d.ts +0 -7
  776. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js +0 -44
  777. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js.map +0 -1
  778. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.d.ts +0 -3
  779. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js +0 -31
  780. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js.map +0 -1
  781. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.d.ts +0 -4
  782. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js +0 -11
  783. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js.map +0 -1
  784. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.d.ts +0 -4
  785. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js +0 -12
  786. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js.map +0 -1
  787. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.d.ts +0 -4
  788. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js +0 -17
  789. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js.map +0 -1
  790. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
  791. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js +0 -30
  792. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js.map +0 -1
  793. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.d.ts +0 -4
  794. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js +0 -14
  795. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js.map +0 -1
  796. package/dist/appBuilder/validators/joi-validators/sample.validator.d.ts +0 -5
  797. package/dist/appBuilder/validators/joi-validators/sample.validator.js +0 -26
  798. package/dist/appBuilder/validators/joi-validators/sample.validator.js.map +0 -1
  799. package/dist/appBuilder/validators/joi-validators/update.app.validator.d.ts +0 -4
  800. package/dist/appBuilder/validators/joi-validators/update.app.validator.js +0 -34
  801. package/dist/appBuilder/validators/joi-validators/update.app.validator.js.map +0 -1
  802. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.d.ts +0 -4
  803. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js +0 -23
  804. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js.map +0 -1
  805. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.d.ts +0 -3
  806. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js +0 -21
  807. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js.map +0 -1
  808. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.d.ts +0 -4
  809. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js +0 -19
  810. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js.map +0 -1
  811. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.d.ts +0 -4
  812. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js +0 -12
  813. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js.map +0 -1
  814. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.d.ts +0 -4
  815. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js +0 -17
  816. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js.map +0 -1
  817. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
  818. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js +0 -16
  819. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js.map +0 -1
  820. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.d.ts +0 -4
  821. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js +0 -14
  822. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js.map +0 -1
  823. package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js +0 -27
  824. package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js.map +0 -1
  825. package/dist/apps/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
  826. package/dist/apps/validators/joi-validators/create.appEvent.validator.js +0 -30
  827. package/dist/apps/validators/joi-validators/create.appEvent.validator.js.map +0 -1
  828. package/dist/apps/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
  829. package/dist/apps/validators/joi-validators/update.appEvent.validator.js +0 -16
  830. package/dist/apps/validators/joi-validators/update.appEvent.validator.js.map +0 -1
  831. package/dist/clients/integrations.client.d.ts +0 -2
  832. package/dist/clients/integrations.client.js +0 -26
  833. package/dist/clients/integrations.client.js.map +0 -1
  834. package/dist/integrationsBuilder/services/integration.service.d.ts +0 -138
  835. package/dist/integrationsBuilder/services/integration.service.js +0 -1148
  836. package/dist/integrationsBuilder/services/integration.service.js.map +0 -1
  837. package/dist/integrationsBuilder/services/integrationBuilder.service.d.ts +0 -130
  838. package/dist/integrationsBuilder/services/integrationBuilder.service.js +0 -1017
  839. package/dist/integrationsBuilder/services/integrationBuilder.service.js.map +0 -1
  840. package/dist/integrationsBuilder/utils/objects.utils.d.ts +0 -2
  841. package/dist/integrationsBuilder/utils/objects.utils.js +0 -48
  842. package/dist/integrationsBuilder/utils/objects.utils.js.map +0 -1
  843. package/dist/integrationsBuilder/utils/string.utils.d.ts +0 -1
  844. package/dist/integrationsBuilder/utils/string.utils.js +0 -9
  845. package/dist/integrationsBuilder/utils/string.utils.js.map +0 -1
  846. package/dist/integrationsBuilder/validators/index.d.ts +0 -18
  847. package/dist/integrationsBuilder/validators/index.js +0 -38
  848. package/dist/integrationsBuilder/validators/index.js.map +0 -1
  849. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.d.ts +0 -3
  850. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js +0 -10
  851. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js.map +0 -1
  852. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.d.ts +0 -4
  853. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js +0 -26
  854. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js.map +0 -1
  855. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.d.ts +0 -3
  856. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js +0 -8
  857. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js.map +0 -1
  858. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.d.ts +0 -3
  859. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js +0 -8
  860. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js.map +0 -1
  861. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.d.ts +0 -3
  862. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js +0 -10
  863. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js.map +0 -1
  864. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.d.ts +0 -3
  865. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js +0 -60
  866. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js.map +0 -1
  867. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.d.ts +0 -3
  868. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js +0 -8
  869. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js.map +0 -1
  870. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.d.ts +0 -3
  871. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js +0 -8
  872. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js.map +0 -1
  873. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.d.ts +0 -3
  874. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js +0 -8
  875. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js.map +0 -1
  876. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.d.ts +0 -3
  877. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js +0 -9
  878. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js.map +0 -1
  879. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.d.ts +0 -3
  880. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js +0 -8
  881. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js.map +0 -1
  882. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.d.ts +0 -3
  883. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js +0 -8
  884. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js.map +0 -1
  885. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.d.ts +0 -3
  886. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js +0 -8
  887. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js.map +0 -1
  888. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.d.ts +0 -3
  889. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js +0 -8
  890. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js.map +0 -1
  891. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.d.ts +0 -3
  892. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js +0 -8
  893. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js.map +0 -1
  894. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.d.ts +0 -3
  895. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js +0 -8
  896. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js.map +0 -1
  897. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.d.ts +0 -3
  898. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js +0 -8
  899. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js.map +0 -1
  900. package/dist/postman.d.ts +0 -1
  901. package/dist/postman.js +0 -21674
  902. package/dist/postman.js.map +0 -1
  903. package/dist/processor/utils/mongo.util.js +0 -152
  904. package/dist/processor/utils/mongo.util.js.map +0 -1
  905. package/dist/processor/utils/postgres.util.d.ts +0 -14
  906. package/dist/processor/utils/postgres.util.js +0 -83
  907. package/dist/processor/utils/postgres.util.js.map +0 -1
  908. package/dist/products/validators/joi-validators/create.product.validator.d.ts +0 -3
  909. package/dist/products/validators/joi-validators/create.product.validator.js +0 -10
  910. package/dist/products/validators/joi-validators/create.product.validator.js.map +0 -1
  911. package/dist/test.appBuilder.js +0 -14
  912. package/dist/test.appBuilder.js.map +0 -1
  913. package/dist/test.import.js +0 -24
  914. package/dist/test.import.js.map +0 -1
  915. package/dist/test.imports.js +0 -28
  916. package/dist/test.imports.js.map +0 -1
  917. package/dist/test.integrationBuilder.js +0 -276
  918. package/dist/test.integrationBuilder.js.map +0 -1
  919. package/dist/test.processor.js +0 -23
  920. package/dist/test.processor.js.map +0 -1
  921. package/dist/test.utils.js +0 -25
  922. package/dist/test.utils.js.map +0 -1
  923. package/dist/types/integrationsBuilder.types.d.ts +0 -276
  924. package/dist/types/integrationsBuilder.types.js +0 -51
  925. package/dist/types/integrationsBuilder.types.js.map +0 -1
  926. /package/dist/{actions/actions.repo.d.ts → pricing/pricing.repo.d.ts} +0 -0
  927. /package/dist/{appBuilder/validators/joi-validators/create.app.validator.d.ts → products/validators/joi-validators/create.productGraph.validator.d.ts} +0 -0
  928. /package/dist/{appBuilder/validators/joi-validators/update.validation.entityData.validator.d.ts → products/validators/joi-validators/update.productGraph.validator.d.ts} +0 -0
  929. /package/dist/{test.appBuilder.d.ts → test/test.broker.kafka.d.ts} +0 -0
  930. /package/dist/{test.imports.d.ts → test/test.broker.nats.d.ts} +0 -0
  931. /package/dist/{test.integrationBuilder.d.ts → test/test.broker.pubsub.d.ts} +0 -0
  932. /package/dist/{test.processor.d.ts → test/test.broker.rabbitmq.d.ts} +0 -0
  933. /package/dist/{test.utils.d.ts → test/test.broker.redis.d.ts} +0 -0
  934. /package/dist/{actions/actions.service.d.ts → test/test.health.d.ts} +0 -0
  935. /package/dist/{actions/utils/actions.util.read.d.ts → test/test.notifiers.d.ts} +0 -0
  936. /package/dist/{processor/utils/mongo.util.d.ts → test/test.products.d.ts} +0 -0
  937. /package/dist/{test.import.d.ts → types/request-tracker.interface.d.ts} +0 -0
@@ -0,0 +1,1620 @@
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 productsBuilder_types_1 = require("../types/productsBuilder.types");
56
+ const workflow_executor_1 = require("./workflow-executor");
57
+ /**
58
+ * Error class for workflow-related errors
59
+ */
60
+ class WorkflowError extends Error {
61
+ constructor(message, code, details) {
62
+ if (typeof window !== 'undefined') {
63
+ throw new Error('Ductape SDK can only be initialized in a server environment.');
64
+ }
65
+ super(message);
66
+ this.code = code;
67
+ this.details = details;
68
+ this.name = 'WorkflowError';
69
+ }
70
+ static configurationError(message) {
71
+ return new WorkflowError(message, 'CONFIGURATION_ERROR');
72
+ }
73
+ static validationError(message, details) {
74
+ return new WorkflowError(message, 'VALIDATION_ERROR', details);
75
+ }
76
+ static notFoundError(message) {
77
+ return new WorkflowError(message, 'NOT_FOUND');
78
+ }
79
+ static executionError(message, details) {
80
+ return new WorkflowError(message, 'EXECUTION_ERROR', details);
81
+ }
82
+ }
83
+ exports.WorkflowError = WorkflowError;
84
+ /**
85
+ * Main Workflow Service class
86
+ * Provides unified interface for workflow management and execution
87
+ */
88
+ class WorkflowService {
89
+ /**
90
+ * Create a new WorkflowService instance
91
+ * @param config - Optional configuration for authentication and workspace context
92
+ */
93
+ constructor(config) {
94
+ /** Service configuration */
95
+ this.config = null;
96
+ /** ProductBuilder instances cache (keyed by product tag) */
97
+ this.productBuilders = new Map();
98
+ /** Local workflow configurations */
99
+ this.localConfigs = new Map();
100
+ /** Workflow API service for backend communication */
101
+ this.workflowApiService = null;
102
+ /** LogService instance for logging operations */
103
+ this.logService = null;
104
+ /** Current product ID for logging */
105
+ this.productId = '';
106
+ this.config = config || null;
107
+ this._privateKey = (config === null || config === void 0 ? void 0 : config.private_key) || '';
108
+ if (config) {
109
+ this.workflowApiService = new workflowApi_service_1.WorkflowApiService(config.env_type);
110
+ }
111
+ }
112
+ // ==================== CONFIGURATION ====================
113
+ /**
114
+ * Update service configuration
115
+ */
116
+ updateConfig(config) {
117
+ this.config = config;
118
+ this.workflowApiService = new workflowApi_service_1.WorkflowApiService(config.env_type);
119
+ }
120
+ /**
121
+ * Get auth payload for API calls
122
+ */
123
+ getAuthPayload() {
124
+ if (!this.config) {
125
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
126
+ }
127
+ return {
128
+ user_id: this.config.user_id,
129
+ workspace_id: this.config.workspace_id,
130
+ public_key: this.config.public_key,
131
+ token: this.config.token,
132
+ };
133
+ }
134
+ /**
135
+ * Ensure WorkflowApiService is initialized
136
+ */
137
+ ensureApiService() {
138
+ if (!this.workflowApiService) {
139
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
140
+ }
141
+ return this.workflowApiService;
142
+ }
143
+ /**
144
+ * Get service configuration
145
+ */
146
+ getConfig() {
147
+ return this.config;
148
+ }
149
+ // ==================== PRODUCT BUILDER MANAGEMENT ====================
150
+ /**
151
+ * Create a new ProductBuilder instance
152
+ */
153
+ createNewProductBuilder() {
154
+ if (!this.config) {
155
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
156
+ }
157
+ return new products_service_1.default({
158
+ workspace_id: this.config.workspace_id,
159
+ public_key: this.config.public_key,
160
+ user_id: this.config.user_id,
161
+ token: this.config.token,
162
+ env_type: this.config.env_type,
163
+ });
164
+ }
165
+ /**
166
+ * Get or create a ProductBuilder instance for the given product tag
167
+ */
168
+ async getProductBuilder(productTag) {
169
+ let builder = this.productBuilders.get(productTag);
170
+ if (!builder) {
171
+ builder = this.createNewProductBuilder();
172
+ await builder.initializeProductByTag(productTag);
173
+ this.productBuilders.set(productTag, builder);
174
+ // Update productId for logging
175
+ this.productId = builder.fetchProductId() || '';
176
+ }
177
+ return builder;
178
+ }
179
+ /**
180
+ * Initialize logging service
181
+ */
182
+ initializeLogService() {
183
+ if (!this.logService && this.config) {
184
+ this.logService = new logs_service_1.default({
185
+ product_id: this.productId,
186
+ workspace_id: this.config.workspace_id,
187
+ public_key: this.config.public_key,
188
+ user_id: this.config.user_id,
189
+ token: this.config.token,
190
+ env_type: this.config.env_type,
191
+ });
192
+ }
193
+ }
194
+ /**
195
+ * Create a new ProcessorService instance for job scheduling
196
+ */
197
+ createNewProcessor() {
198
+ if (!this.config) {
199
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
200
+ }
201
+ return new processor_service_1.default({
202
+ workspace_id: this.config.workspace_id,
203
+ public_key: this.config.public_key,
204
+ user_id: this.config.user_id,
205
+ token: this.config.token,
206
+ env_type: this.config.env_type,
207
+ private_key: this._privateKey,
208
+ });
209
+ }
210
+ // ==================== WORKFLOW CRUD OPERATIONS ====================
211
+ /**
212
+ * Create a new workflow from JSON schema
213
+ *
214
+ * @example
215
+ * ```ts
216
+ * await ductape.workflows.create('my-product', {
217
+ * tag: 'order-fulfillment',
218
+ * name: 'Order Fulfillment',
219
+ * steps: [
220
+ * { tag: 'validate', type: 'action', app: 'orders', event: 'validate', input: {} },
221
+ * { tag: 'process', type: 'database_action', database: 'orders-db', event: 'create', input: {} },
222
+ * ],
223
+ * envs: [{ slug: 'prd' }],
224
+ * });
225
+ * ```
226
+ */
227
+ async create(productTag, workflowData) {
228
+ var _a;
229
+ // Validate required fields
230
+ if (!workflowData.name || !workflowData.tag || !((_a = workflowData.steps) === null || _a === void 0 ? void 0 : _a.length)) {
231
+ throw WorkflowError.validationError('Workflow requires name, tag, and at least one step');
232
+ }
233
+ // Persist to backend using ProductBuilder
234
+ const builder = await this.getProductBuilder(productTag);
235
+ await builder.createWorkflow(workflowData);
236
+ // Store locally
237
+ const localConfig = {
238
+ name: workflowData.name,
239
+ tag: workflowData.tag,
240
+ description: workflowData.description,
241
+ input: workflowData.input,
242
+ output: workflowData.output,
243
+ steps: workflowData.steps,
244
+ signals: workflowData.signals,
245
+ queries: workflowData.queries,
246
+ options: workflowData.options,
247
+ envs: workflowData.envs,
248
+ };
249
+ this.localConfigs.set(workflowData.tag, localConfig);
250
+ }
251
+ /**
252
+ * Fetch all workflows for a product
253
+ *
254
+ * @example
255
+ * ```ts
256
+ * const workflows = await ductape.workflows.fetchAll('my-product');
257
+ * workflows.forEach(wf => console.log(wf.name, wf.tag));
258
+ * ```
259
+ */
260
+ async fetchAll(productTag) {
261
+ // Return local configs if no product tag
262
+ if (!productTag) {
263
+ return Array.from(this.localConfigs.values());
264
+ }
265
+ // Fetch from API using ProductBuilder
266
+ try {
267
+ const builder = await this.getProductBuilder(productTag);
268
+ const workflows = await builder.fetchWorkflows();
269
+ // Convert IProductWorkflow[] to IWorkflowConfig[]
270
+ return workflows.map((wf) => this.productWorkflowToConfig(wf));
271
+ }
272
+ catch (error) {
273
+ // Fall back to local configs if API fails
274
+ return Array.from(this.localConfigs.values());
275
+ }
276
+ }
277
+ /**
278
+ * Fetch a specific workflow by tag
279
+ *
280
+ * @example
281
+ * ```ts
282
+ * const workflow = await ductape.workflows.fetch('order-fulfillment', 'my-product');
283
+ * console.log(workflow?.name, workflow?.steps.length);
284
+ * ```
285
+ */
286
+ async fetch(workflowTag, productTag) {
287
+ // If productTag is provided, fetch from API
288
+ if (productTag) {
289
+ try {
290
+ const builder = await this.getProductBuilder(productTag);
291
+ const workflow = await builder.fetchWorkflow(workflowTag);
292
+ if (workflow) {
293
+ const config = this.productWorkflowToConfig(workflow);
294
+ // Update local cache
295
+ this.localConfigs.set(workflowTag, config);
296
+ return config;
297
+ }
298
+ return null;
299
+ }
300
+ catch (error) {
301
+ // Fall back to local config
302
+ return this.localConfigs.get(workflowTag) || null;
303
+ }
304
+ }
305
+ return this.localConfigs.get(workflowTag) || null;
306
+ }
307
+ /**
308
+ * Update a workflow
309
+ *
310
+ * @example
311
+ * ```ts
312
+ * await ductape.workflows.update('order-fulfillment', 'my-product', {
313
+ * description: 'Updated description',
314
+ * options: { timeout: 3600000 },
315
+ * });
316
+ * ```
317
+ */
318
+ async update(workflowTag, productTag, updates) {
319
+ var _a, _b, _c, _d, _e, _f, _g;
320
+ // Update in backend
321
+ const builder = await this.getProductBuilder(productTag);
322
+ await builder.updateWorkflow(workflowTag, updates);
323
+ // Update local cache
324
+ const existing = this.localConfigs.get(workflowTag);
325
+ if (existing) {
326
+ 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 });
327
+ this.localConfigs.set(workflowTag, updated);
328
+ }
329
+ }
330
+ /**
331
+ * Delete a workflow
332
+ *
333
+ * @example
334
+ * ```ts
335
+ * await ductape.workflows.delete('order-fulfillment', 'my-product');
336
+ * ```
337
+ */
338
+ async delete(workflowTag, productTag) {
339
+ // Delete from backend
340
+ const builder = await this.getProductBuilder(productTag);
341
+ await builder.deleteWorkflow(workflowTag);
342
+ // Remove from local cache
343
+ this.localConfigs.delete(workflowTag);
344
+ }
345
+ // ==================== CODE-FIRST API ====================
346
+ /**
347
+ * Define a workflow using the code-first API
348
+ * Compiles the handler to JSON schema and creates the workflow in one step
349
+ *
350
+ * @example
351
+ * ```ts
352
+ * const orderWorkflow = await ductape.workflows.define({
353
+ * product: 'my-product',
354
+ * tag: 'order-fulfillment',
355
+ * name: 'Order Fulfillment',
356
+ * handler: async (ctx) => {
357
+ * const validation = await ctx.step('validate', async () => {
358
+ * return ctx.action.run({
359
+ * app: 'inventory-service',
360
+ * event: 'validate-order',
361
+ * input: { body: ctx.input },
362
+ * });
363
+ * });
364
+ *
365
+ * if (!validation.valid) {
366
+ * return { success: false, error: validation.reason };
367
+ * }
368
+ *
369
+ * return { success: true };
370
+ * },
371
+ * });
372
+ * ```
373
+ */
374
+ async define(options) {
375
+ // Validate required fields
376
+ if (!options.tag || !options.name || !options.handler) {
377
+ throw WorkflowError.validationError('Workflow definition requires tag, name, and handler');
378
+ }
379
+ // Create a workflow compiler instance
380
+ const compiler = new WorkflowCompiler(options);
381
+ // Compile the handler to JSON schema
382
+ const schema = compiler.compile();
383
+ // If product is specified, create the workflow
384
+ if (options.product) {
385
+ await this.create(options.product, schema);
386
+ }
387
+ // Store locally
388
+ const localConfig = {
389
+ name: schema.name,
390
+ tag: schema.tag,
391
+ description: schema.description,
392
+ input: schema.input,
393
+ output: schema.output,
394
+ steps: schema.steps,
395
+ signals: schema.signals,
396
+ queries: schema.queries,
397
+ options: schema.options,
398
+ envs: schema.envs,
399
+ };
400
+ this.localConfigs.set(schema.tag, localConfig);
401
+ // Return the defined workflow with compile method
402
+ return {
403
+ tag: options.tag,
404
+ name: options.name,
405
+ handler: options.handler,
406
+ compile: () => schema,
407
+ schema,
408
+ };
409
+ }
410
+ // ==================== WORKFLOW EXECUTION ====================
411
+ /**
412
+ * Execute a workflow
413
+ *
414
+ * @example
415
+ * ```ts
416
+ * const result = await ductape.workflows.execute({
417
+ * product: 'my-product',
418
+ * env: 'production',
419
+ * tag: 'order-fulfillment',
420
+ * input: {
421
+ * order_id: 'ORD-12345',
422
+ * items: [{ product_id: 'PROD-1', quantity: 2 }],
423
+ * },
424
+ * });
425
+ *
426
+ * console.log(result.status); // 'completed' | 'failed' | 'rolled_back'
427
+ * console.log(result.output);
428
+ * ```
429
+ */
430
+ async execute(options) {
431
+ var _a, _b, _c, _d, _e;
432
+ if (!this.config) {
433
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
434
+ }
435
+ const process_id = (0, processor_utils_1.generateObjectId)();
436
+ // Session log fields (will be populated if session is provided)
437
+ let sessionLogFields = {};
438
+ let resolvedOptions = options;
439
+ // Fetch the workflow configuration from backend
440
+ const builder = await this.getProductBuilder(options.product);
441
+ const workflow = await builder.fetchWorkflow(options.tag);
442
+ if (!workflow) {
443
+ throw WorkflowError.notFoundError(`Workflow ${options.tag} not found`);
444
+ }
445
+ // Process session if provided - verify and resolve $Session{} references
446
+ if (options.session) {
447
+ const privateKey = builder.fetchPrivateKey();
448
+ if (privateKey) {
449
+ const { processSessionForExecution } = await Promise.resolve().then(() => __importStar(require('../sessions')));
450
+ const sessionResult = await processSessionForExecution(options.session, privateKey, options, options.env);
451
+ if (sessionResult.error) {
452
+ throw WorkflowError.executionError(`Session validation failed: ${sessionResult.error}`);
453
+ }
454
+ resolvedOptions = sessionResult.input;
455
+ sessionLogFields = sessionResult.logFields;
456
+ }
457
+ }
458
+ // Initialize logging
459
+ this.initializeLogService();
460
+ 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);
461
+ (_a = this.logService) === null || _a === void 0 ? void 0 : _a.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow execute - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
462
+ try {
463
+ // Create and run the workflow executor with resolved options and session context
464
+ const executor = new workflow_executor_1.WorkflowExecutor(this.config, workflow, resolvedOptions, this._privateKey, sessionLogFields);
465
+ const result = await executor.execute();
466
+ (_b = this.logService) === null || _b === void 0 ? void 0 : _b.add(Object.assign(Object.assign({}, baseLogs), { message: 'Workflow execute - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
467
+ (_c = this.logService) === null || _c === void 0 ? void 0 : _c.publish();
468
+ return result;
469
+ }
470
+ catch (error) {
471
+ (_d = this.logService) === null || _d === void 0 ? void 0 : _d.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 }));
472
+ await ((_e = this.logService) === null || _e === void 0 ? void 0 : _e.publish());
473
+ throw error;
474
+ }
475
+ }
476
+ // ==================== WORKFLOW DISPATCH ====================
477
+ /**
478
+ * Dispatch a workflow to run as a scheduled job
479
+ *
480
+ * @example
481
+ * ```ts
482
+ * // Schedule a workflow to run in 1 hour
483
+ * const result = await ductape.workflows.dispatch({
484
+ * product: 'my-product',
485
+ * env: 'production',
486
+ * workflow: 'order-fulfillment',
487
+ * input: { order_id: 'ORD-123' },
488
+ * schedule: { start_at: Date.now() + 3600000 },
489
+ * });
490
+ *
491
+ * // Run on a cron schedule
492
+ * const result = await ductape.workflows.dispatch({
493
+ * product: 'my-product',
494
+ * env: 'production',
495
+ * workflow: 'daily-report',
496
+ * input: {},
497
+ * schedule: { cron: '0 0 * * *' }, // Daily at midnight
498
+ * });
499
+ * ```
500
+ */
501
+ async dispatch(data) {
502
+ var _a, _b, _c, _d, _e, _f;
503
+ const process_id = (0, processor_utils_1.generateObjectId)();
504
+ const processorService = this.createNewProcessor();
505
+ const productBuilder = await this.getProductBuilder(data.product);
506
+ const schedule = data.schedule || {};
507
+ const startAt = typeof schedule.start_at === 'string' ? new Date(schedule.start_at).getTime() : schedule.start_at || Date.now();
508
+ // Generate job tag based on workflow
509
+ const jobTag = `workflow:${data.workflow}`;
510
+ // Initialize logging
511
+ this.initializeLogService();
512
+ const baseLogs = {
513
+ product_tag: data.product,
514
+ workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '',
515
+ env: data.env,
516
+ process_id,
517
+ type: logs_types_1.LogEventTypes.WORKFLOW,
518
+ parent_tag: data.workflow,
519
+ data: { workflow: data.workflow, operation: 'dispatch' },
520
+ };
521
+ (_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 }));
522
+ try {
523
+ // Check if job exists, if not create it
524
+ const existingJob = await productBuilder.fetchJob(jobTag);
525
+ if (!existingJob) {
526
+ await productBuilder.createJob({
527
+ tag: jobTag,
528
+ name: `Workflow: ${data.workflow}`,
529
+ description: `Auto-created job for workflow ${data.workflow}`,
530
+ type: productsBuilder_types_1.JobEventTypes.WORKFLOW, // Use workflow job type
531
+ app: data.workflow,
532
+ event: 'execute',
533
+ executions: 0,
534
+ intervals: schedule.every || 0,
535
+ start_at: startAt,
536
+ });
537
+ }
538
+ const jobInput = {
539
+ product: data.product,
540
+ env: data.env,
541
+ event: jobTag,
542
+ input: data.input,
543
+ retries: data.retries || 0,
544
+ start_at: startAt,
545
+ session: data.session,
546
+ cache: data.cache,
547
+ repeat: schedule.cron || schedule.every
548
+ ? {
549
+ cron: schedule.cron,
550
+ every: schedule.every,
551
+ limit: schedule.limit,
552
+ endDate: schedule.endDate,
553
+ tz: schedule.tz,
554
+ }
555
+ : undefined,
556
+ };
557
+ await processorService.processJob(jobInput);
558
+ const isRecurring = !!(schedule.cron || schedule.every);
559
+ let nextRunAt;
560
+ if (isRecurring && schedule.every) {
561
+ nextRunAt = startAt + schedule.every;
562
+ }
563
+ const job_id = (0, crypto_1.randomUUID)();
564
+ (_c = this.logService) === null || _c === void 0 ? void 0 : _c.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 }));
565
+ (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
566
+ return {
567
+ job_id,
568
+ status: startAt > Date.now() ? 'scheduled' : 'queued',
569
+ scheduled_at: startAt,
570
+ recurring: isRecurring,
571
+ next_run_at: nextRunAt,
572
+ };
573
+ }
574
+ catch (error) {
575
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.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 }));
576
+ await ((_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish());
577
+ throw error;
578
+ }
579
+ }
580
+ // ==================== SIGNAL & QUERY ====================
581
+ /**
582
+ * Send a signal to a running workflow
583
+ *
584
+ * @example
585
+ * ```ts
586
+ * await ductape.workflows.signal({
587
+ * product: 'my-product',
588
+ * env: 'production',
589
+ * workflow_id: 'wf-123',
590
+ * signal: 'approve',
591
+ * payload: { approver_id: 'user-456', comments: 'Approved' },
592
+ * });
593
+ * ```
594
+ */
595
+ async signal(options) {
596
+ var _a, _b, _c, _d, _e, _f;
597
+ const process_id = (0, processor_utils_1.generateObjectId)();
598
+ // Initialize logging
599
+ if (options.product) {
600
+ await this.getProductBuilder(options.product);
601
+ }
602
+ this.initializeLogService();
603
+ const baseLogs = {
604
+ product_tag: options.product,
605
+ workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '',
606
+ env: options.env,
607
+ process_id,
608
+ type: logs_types_1.LogEventTypes.WORKFLOW,
609
+ parent_tag: options.workflow_id,
610
+ child_tag: options.signal,
611
+ data: { workflow_id: options.workflow_id, signal: options.signal, operation: 'signal' },
612
+ };
613
+ (_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 }));
614
+ try {
615
+ const apiService = this.ensureApiService();
616
+ const auth = this.getAuthPayload();
617
+ await apiService.sendSignal(options.workflow_id, {
618
+ product: options.product,
619
+ env: options.env,
620
+ signal: options.signal,
621
+ payload: options.payload,
622
+ }, auth);
623
+ (_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 }));
624
+ (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
625
+ }
626
+ catch (error) {
627
+ (_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 }));
628
+ await ((_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish());
629
+ throw error;
630
+ }
631
+ }
632
+ /**
633
+ * Query a running workflow
634
+ *
635
+ * @example
636
+ * ```ts
637
+ * const status = await ductape.workflows.query({
638
+ * product: 'my-product',
639
+ * env: 'production',
640
+ * workflow_id: 'wf-123',
641
+ * query: 'getStatus',
642
+ * });
643
+ *
644
+ * console.log(status.current_step, status.progress);
645
+ * ```
646
+ */
647
+ async query(options) {
648
+ // Query is handled by getting workflow status and extracting query result
649
+ const status = await this.status({
650
+ product: options.product,
651
+ env: options.env,
652
+ workflow_id: options.workflow_id,
653
+ });
654
+ if (!status) {
655
+ throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
656
+ }
657
+ // Return the state which contains query results
658
+ return (status.state[options.query] || status);
659
+ }
660
+ // ==================== REPLAY, RESTART & RESUME ====================
661
+ /**
662
+ * Replay a workflow with the same input
663
+ *
664
+ * @example
665
+ * ```ts
666
+ * const result = await ductape.workflows.replay({
667
+ * product: 'my-product',
668
+ * env: 'production',
669
+ * workflow_id: 'wf-123',
670
+ * reason: 'Debugging payment failure',
671
+ * });
672
+ * ```
673
+ */
674
+ async replay(options) {
675
+ var _a, _b, _c, _d, _e, _f;
676
+ const process_id = (0, processor_utils_1.generateObjectId)();
677
+ if (!this.config) {
678
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
679
+ }
680
+ // Initialize logging
681
+ await this.getProductBuilder(options.product);
682
+ this.initializeLogService();
683
+ const baseLogs = {
684
+ product_tag: options.product,
685
+ workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '',
686
+ env: options.env,
687
+ process_id,
688
+ type: logs_types_1.LogEventTypes.WORKFLOW,
689
+ parent_tag: options.workflow_id,
690
+ data: { workflow_id: options.workflow_id, operation: 'replay' },
691
+ };
692
+ (_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 }));
693
+ try {
694
+ // Get original workflow execution state from backend
695
+ const originalStatus = await this.status({
696
+ product: options.product,
697
+ env: options.env,
698
+ workflow_id: options.workflow_id,
699
+ });
700
+ if (!originalStatus) {
701
+ throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
702
+ }
703
+ // Execute with the same input
704
+ const result = await this.execute({
705
+ product: options.product,
706
+ env: options.env,
707
+ tag: originalStatus.workflow_tag,
708
+ input: originalStatus.input || {},
709
+ idempotency_key: options.idempotency_key,
710
+ });
711
+ (_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 }));
712
+ (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
713
+ return Object.assign(Object.assign({}, result), { replayed_from: options.workflow_id });
714
+ }
715
+ catch (error) {
716
+ (_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 }));
717
+ await ((_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish());
718
+ throw error;
719
+ }
720
+ }
721
+ /**
722
+ * Restart a workflow with new or modified input
723
+ *
724
+ * @example
725
+ * ```ts
726
+ * const result = await ductape.workflows.restart({
727
+ * product: 'my-product',
728
+ * env: 'production',
729
+ * workflow_id: 'wf-123',
730
+ * input: { email: 'corrected@email.com' },
731
+ * reason: 'Customer email was incorrect',
732
+ * });
733
+ * ```
734
+ */
735
+ async restart(options) {
736
+ if (!this.config) {
737
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
738
+ }
739
+ // Get original workflow execution state from backend
740
+ const originalStatus = await this.status({
741
+ product: options.product,
742
+ env: options.env,
743
+ workflow_id: options.workflow_id,
744
+ });
745
+ if (!originalStatus) {
746
+ throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
747
+ }
748
+ // Determine the new input
749
+ let newInput;
750
+ if (options.input) {
751
+ newInput = options.input;
752
+ }
753
+ else if (options.input_override && options.merge_input) {
754
+ newInput = Object.assign(Object.assign({}, (originalStatus.input || {})), options.input_override);
755
+ }
756
+ else if (options.input_override) {
757
+ newInput = options.input_override;
758
+ }
759
+ else {
760
+ newInput = originalStatus.input || {};
761
+ }
762
+ // Execute with the new input
763
+ const result = await this.execute({
764
+ product: options.product,
765
+ env: options.env,
766
+ tag: originalStatus.workflow_tag,
767
+ input: newInput,
768
+ });
769
+ return Object.assign(Object.assign({}, result), { restarted_from: options.workflow_id });
770
+ }
771
+ /**
772
+ * Resume a paused or failed workflow from where it stopped
773
+ *
774
+ * @example
775
+ * ```ts
776
+ * const result = await ductape.workflows.resume({
777
+ * product: 'my-product',
778
+ * env: 'production',
779
+ * workflow_id: 'wf-123',
780
+ * from_checkpoint: 'payment-complete',
781
+ * });
782
+ * ```
783
+ */
784
+ async resume(options) {
785
+ if (!this.config) {
786
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
787
+ }
788
+ // Get original workflow execution state from backend
789
+ const originalStatus = await this.status({
790
+ product: options.product,
791
+ env: options.env,
792
+ workflow_id: options.workflow_id,
793
+ });
794
+ if (!originalStatus) {
795
+ throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
796
+ }
797
+ // Fetch the workflow configuration
798
+ const builder = await this.getProductBuilder(options.product);
799
+ const workflow = await builder.fetchWorkflow(originalStatus.workflow_tag);
800
+ if (!workflow) {
801
+ throw WorkflowError.notFoundError(`Workflow ${originalStatus.workflow_tag} not found`);
802
+ }
803
+ // Create executor with resume options
804
+ const executor = new workflow_executor_1.WorkflowExecutor(this.config, workflow, {
805
+ product: options.product,
806
+ env: options.env,
807
+ tag: originalStatus.workflow_tag,
808
+ input: Object.assign(Object.assign({}, (originalStatus.input || {})), (options.input || {})),
809
+ }, this._privateKey);
810
+ // Resume execution (executor handles skipping completed steps)
811
+ const result = await executor.resume({
812
+ completed_steps: originalStatus.completed_steps,
813
+ state: originalStatus.state,
814
+ from_checkpoint: options.from_checkpoint,
815
+ from_step: options.from_step,
816
+ skip_steps: options.skip_steps,
817
+ });
818
+ return Object.assign(Object.assign({}, result), { resumed_from: options.workflow_id, resumed_checkpoint: options.from_checkpoint });
819
+ }
820
+ /**
821
+ * Replay a workflow starting from a specific step
822
+ *
823
+ * @example
824
+ * ```ts
825
+ * const result = await ductape.workflows.replayFromStep({
826
+ * product: 'my-product',
827
+ * env: 'production',
828
+ * workflow_id: 'wf-123',
829
+ * from_step: 'process-payment',
830
+ * });
831
+ * ```
832
+ */
833
+ async replayFromStep(options) {
834
+ if (!this.config) {
835
+ throw WorkflowError.configurationError('WorkflowService not configured. Please provide config when initializing.');
836
+ }
837
+ // Get original workflow execution state
838
+ const originalStatus = await this.status({
839
+ product: options.product,
840
+ env: options.env,
841
+ workflow_id: options.workflow_id,
842
+ });
843
+ if (!originalStatus) {
844
+ throw WorkflowError.notFoundError(`Workflow ${options.workflow_id} not found`);
845
+ }
846
+ // Fetch the workflow configuration
847
+ const builder = await this.getProductBuilder(options.product);
848
+ const workflow = await builder.fetchWorkflow(originalStatus.workflow_tag);
849
+ if (!workflow) {
850
+ throw WorkflowError.notFoundError(`Workflow ${originalStatus.workflow_tag} not found`);
851
+ }
852
+ // Find steps before from_step to mark as completed
853
+ const stepIndex = workflow.steps.findIndex((s) => s.tag === options.from_step);
854
+ if (stepIndex === -1) {
855
+ throw WorkflowError.validationError(`Step ${options.from_step} not found in workflow`);
856
+ }
857
+ const completedSteps = workflow.steps.slice(0, stepIndex).map((s) => s.tag);
858
+ // Create executor with partial state
859
+ const executor = new workflow_executor_1.WorkflowExecutor(this.config, workflow, {
860
+ product: options.product,
861
+ env: options.env,
862
+ tag: originalStatus.workflow_tag,
863
+ input: originalStatus.input || {},
864
+ }, this._privateKey);
865
+ // Resume from the specified step with overridden outputs
866
+ const result = await executor.resume({
867
+ completed_steps: completedSteps,
868
+ state: originalStatus.state,
869
+ step_outputs: options.step_outputs,
870
+ });
871
+ return Object.assign(Object.assign({}, result), { replayed_from: options.workflow_id });
872
+ }
873
+ // ==================== STATUS & MANAGEMENT ====================
874
+ /**
875
+ * Get the status of a workflow execution
876
+ *
877
+ * @example
878
+ * ```ts
879
+ * const status = await ductape.workflows.status({
880
+ * product: 'my-product',
881
+ * env: 'production',
882
+ * workflow_id: 'wf-123',
883
+ * });
884
+ * ```
885
+ */
886
+ async status(options) {
887
+ const apiService = this.ensureApiService();
888
+ const auth = this.getAuthPayload();
889
+ const response = await apiService.getStatus(options.workflow_id, options.product, options.env, auth);
890
+ if (!response) {
891
+ return null;
892
+ }
893
+ return {
894
+ workflow_id: response.workflow_id,
895
+ workflow_tag: response.workflow_tag,
896
+ status: response.status,
897
+ current_step: response.current_step,
898
+ completed_steps: response.completed_steps,
899
+ state: response.state,
900
+ started_at: response.started_at,
901
+ updated_at: response.updated_at,
902
+ input: response.input,
903
+ output: response.output,
904
+ error: response.error,
905
+ };
906
+ }
907
+ /**
908
+ * Cancel a running workflow
909
+ *
910
+ * @example
911
+ * ```ts
912
+ * const result = await ductape.workflows.cancel({
913
+ * product: 'my-product',
914
+ * env: 'production',
915
+ * workflow_id: 'wf-123',
916
+ * reason: 'User requested cancellation',
917
+ * });
918
+ * ```
919
+ */
920
+ async cancel(options) {
921
+ const apiService = this.ensureApiService();
922
+ const auth = this.getAuthPayload();
923
+ const response = await apiService.cancel(options.workflow_id, options.product, options.env, options.reason || 'Cancelled by user', auth);
924
+ return {
925
+ cancelled: response.cancelled,
926
+ rolled_back_steps: response.rolled_back_steps,
927
+ failed_rollbacks: response.failed_rollbacks,
928
+ };
929
+ }
930
+ /**
931
+ * Get the execution history of a workflow
932
+ *
933
+ * @example
934
+ * ```ts
935
+ * const history = await ductape.workflows.history({
936
+ * product: 'my-product',
937
+ * env: 'production',
938
+ * workflow_id: 'wf-123',
939
+ * });
940
+ * ```
941
+ */
942
+ async history(options) {
943
+ const apiService = this.ensureApiService();
944
+ const auth = this.getAuthPayload();
945
+ const response = await apiService.getHistory(options.workflow_id, options.product, options.env, auth);
946
+ return {
947
+ workflow_id: response.workflow_id,
948
+ workflow_tag: response.workflow_tag,
949
+ status: response.status,
950
+ events: response.events.map((e) => ({
951
+ type: e.type,
952
+ timestamp: e.timestamp,
953
+ data: e.data,
954
+ })),
955
+ checkpoints: response.checkpoints,
956
+ replays: response.replays,
957
+ restarts: response.restarts,
958
+ };
959
+ }
960
+ /**
961
+ * Get detailed information about a specific step
962
+ *
963
+ * @example
964
+ * ```ts
965
+ * const detail = await ductape.workflows.stepDetail({
966
+ * product: 'my-product',
967
+ * env: 'production',
968
+ * workflow_id: 'wf-123',
969
+ * step_tag: 'process-payment',
970
+ * });
971
+ * ```
972
+ */
973
+ async stepDetail(options) {
974
+ const apiService = this.ensureApiService();
975
+ const auth = this.getAuthPayload();
976
+ const response = await apiService.getStepDetail(options.workflow_id, options.step_tag, options.product, options.env, auth);
977
+ if (!response) {
978
+ return null;
979
+ }
980
+ return {
981
+ tag: response.tag,
982
+ name: response.name,
983
+ status: response.status,
984
+ input: response.input,
985
+ output: response.output,
986
+ error: response.error,
987
+ attempts: response.attempts,
988
+ start_time: response.start_time,
989
+ end_time: response.end_time,
990
+ duration: response.duration,
991
+ rollback_status: response.rollback_status,
992
+ rollback_error: response.rollback_error,
993
+ };
994
+ }
995
+ /**
996
+ * List all related executions (replays, restarts, resumes)
997
+ *
998
+ * @example
999
+ * ```ts
1000
+ * const related = await ductape.workflows.relatedExecutions({
1001
+ * product: 'my-product',
1002
+ * env: 'production',
1003
+ * workflow_id: 'wf-123',
1004
+ * });
1005
+ * ```
1006
+ */
1007
+ async relatedExecutions(options) {
1008
+ const apiService = this.ensureApiService();
1009
+ const auth = this.getAuthPayload();
1010
+ const response = await apiService.getRelatedExecutions(options.workflow_id, options.product, options.env, auth);
1011
+ return {
1012
+ original: response.original,
1013
+ executions: response.executions.map((e) => ({
1014
+ workflow_id: e.workflow_id,
1015
+ type: e.type,
1016
+ status: e.status,
1017
+ created_at: e.created_at,
1018
+ replayed_from: e.replayed_from,
1019
+ restarted_from: e.restarted_from,
1020
+ resumed_from: e.resumed_from,
1021
+ })),
1022
+ };
1023
+ }
1024
+ /**
1025
+ * Compare two workflow executions
1026
+ *
1027
+ * @example
1028
+ * ```ts
1029
+ * const comparison = await ductape.workflows.compare({
1030
+ * product: 'my-product',
1031
+ * env: 'production',
1032
+ * workflow_ids: ['wf-123', 'wf-456'],
1033
+ * });
1034
+ * ```
1035
+ */
1036
+ async compare(options) {
1037
+ const apiService = this.ensureApiService();
1038
+ const auth = this.getAuthPayload();
1039
+ const response = await apiService.compareExecutions(options.workflow_ids, options.product, options.env, auth);
1040
+ return {
1041
+ workflows: response.workflows,
1042
+ input_diff: response.input_diff,
1043
+ step_diffs: response.step_diffs,
1044
+ outcome_diff: response.outcome_diff,
1045
+ };
1046
+ }
1047
+ // ==================== HELPER METHODS ====================
1048
+ /**
1049
+ * Convert IProductWorkflow to IWorkflowConfig
1050
+ */
1051
+ productWorkflowToConfig(workflow) {
1052
+ return {
1053
+ name: workflow.name,
1054
+ tag: workflow.tag,
1055
+ description: workflow.description,
1056
+ input: workflow.input,
1057
+ output: workflow.output,
1058
+ steps: workflow.steps,
1059
+ signals: workflow.signals,
1060
+ queries: workflow.queries,
1061
+ options: workflow.options,
1062
+ envs: workflow.envs,
1063
+ };
1064
+ }
1065
+ }
1066
+ exports.WorkflowService = WorkflowService;
1067
+ // ==================== WORKFLOW COMPILER ====================
1068
+ /**
1069
+ * Recording context that captures step definitions during handler execution
1070
+ */
1071
+ class RecordingContext {
1072
+ constructor(_input, _workflowTag) {
1073
+ this._input = _input;
1074
+ this._workflowTag = _workflowTag;
1075
+ this._steps = [];
1076
+ this._stepOrder = 0;
1077
+ this._currentStepTag = null;
1078
+ this._pendingRollback = null;
1079
+ }
1080
+ // Readonly workflow metadata
1081
+ get input() {
1082
+ return this._input;
1083
+ }
1084
+ get workflow_id() {
1085
+ return `compile-${this._workflowTag}`;
1086
+ }
1087
+ get workflow_tag() {
1088
+ return this._workflowTag;
1089
+ }
1090
+ get env() {
1091
+ return 'compile';
1092
+ }
1093
+ get product() {
1094
+ return 'compile';
1095
+ }
1096
+ get context() {
1097
+ return {};
1098
+ }
1099
+ get state() {
1100
+ return {};
1101
+ }
1102
+ get steps() {
1103
+ return {};
1104
+ }
1105
+ get completed_steps() {
1106
+ return [];
1107
+ }
1108
+ get current_step() {
1109
+ return this._currentStepTag;
1110
+ }
1111
+ /**
1112
+ * Record a step definition
1113
+ */
1114
+ async step(tag, handler, rollback, options) {
1115
+ this._currentStepTag = tag;
1116
+ this._stepOrder++;
1117
+ // Create step placeholder - will be updated by component calls
1118
+ const step = {
1119
+ tag,
1120
+ type: productsBuilder_types_1.WorkflowStepType.ACTION,
1121
+ event: '',
1122
+ input: {},
1123
+ options,
1124
+ };
1125
+ // Execute handler to capture component calls
1126
+ try {
1127
+ await handler();
1128
+ }
1129
+ catch (e) {
1130
+ // Ignore errors during compilation - we're just tracing
1131
+ }
1132
+ // If rollback was provided, try to capture it
1133
+ if (rollback && this._pendingRollback) {
1134
+ step.rollback = this._pendingRollback;
1135
+ this._pendingRollback = null;
1136
+ }
1137
+ // Only add if step type was set by a component call
1138
+ if (step.event) {
1139
+ this._steps.push(step);
1140
+ }
1141
+ this._currentStepTag = null;
1142
+ // Return mock result
1143
+ return {};
1144
+ }
1145
+ // ==================== COMPONENT CONTEXTS ====================
1146
+ get action() {
1147
+ return {
1148
+ run: async (options) => {
1149
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.ACTION, options.action, {
1150
+ app: options.app,
1151
+ input: options.input,
1152
+ options: { retries: options.retries, timeout: options.timeout },
1153
+ });
1154
+ return {};
1155
+ return {};
1156
+ },
1157
+ };
1158
+ }
1159
+ get database() {
1160
+ return {
1161
+ execute: async (options) => {
1162
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1163
+ database: options.database,
1164
+ input: options.input,
1165
+ options: { retries: options.retries, timeout: options.timeout },
1166
+ });
1167
+ return {};
1168
+ },
1169
+ query: async (options) => {
1170
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1171
+ database: options.database,
1172
+ input: options.params || {},
1173
+ });
1174
+ return [];
1175
+ },
1176
+ insert: async (options) => {
1177
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1178
+ database: options.database,
1179
+ input: { data: options.data },
1180
+ });
1181
+ return {};
1182
+ },
1183
+ update: async (options) => {
1184
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1185
+ database: options.database,
1186
+ input: { data: options.data, where: options.where },
1187
+ });
1188
+ return {};
1189
+ },
1190
+ delete: async (options) => {
1191
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.DATABASE_ACTION, options.event, {
1192
+ database: options.database,
1193
+ input: { where: options.where },
1194
+ });
1195
+ return true;
1196
+ },
1197
+ };
1198
+ }
1199
+ get graph() {
1200
+ return {
1201
+ execute: async (options) => {
1202
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, options.action, {
1203
+ graph: options.graph,
1204
+ input: options.input,
1205
+ });
1206
+ return {};
1207
+ },
1208
+ createNode: async (options) => {
1209
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'createNode', {
1210
+ graph: options.graph,
1211
+ input: { labels: options.labels, properties: options.properties },
1212
+ });
1213
+ return {};
1214
+ },
1215
+ updateNode: async (options) => {
1216
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'updateNode', {
1217
+ graph: options.graph,
1218
+ input: { id: options.id, properties: options.properties },
1219
+ });
1220
+ return {};
1221
+ },
1222
+ deleteNode: async (options) => {
1223
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'deleteNode', {
1224
+ graph: options.graph,
1225
+ input: { id: options.id },
1226
+ });
1227
+ },
1228
+ createRelationship: async (options) => {
1229
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'createRelationship', {
1230
+ graph: options.graph,
1231
+ input: { from: options.from, to: options.to, type: options.type, properties: options.properties },
1232
+ });
1233
+ return {};
1234
+ },
1235
+ deleteRelationship: async (options) => {
1236
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, 'deleteRelationship', {
1237
+ graph: options.graph,
1238
+ input: { id: options.id },
1239
+ });
1240
+ },
1241
+ query: async (options) => {
1242
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.GRAPH, options.action, {
1243
+ graph: options.graph,
1244
+ input: options.params || {},
1245
+ });
1246
+ return [];
1247
+ },
1248
+ };
1249
+ }
1250
+ get notification() {
1251
+ return {
1252
+ send: async (options) => {
1253
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1254
+ notification: options.notification,
1255
+ input: options.input,
1256
+ options: { retries: options.retries },
1257
+ });
1258
+ },
1259
+ email: async (options) => {
1260
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1261
+ notification: options.notification,
1262
+ input: { recipients: options.recipients, subject: options.subject, template: options.template },
1263
+ });
1264
+ },
1265
+ push: async (options) => {
1266
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1267
+ notification: options.notification,
1268
+ input: { tokens: options.tokens, title: options.title, body: options.body, data: options.data },
1269
+ });
1270
+ },
1271
+ sms: async (options) => {
1272
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.NOTIFICATION, options.event, {
1273
+ notification: options.notification,
1274
+ input: { phones: options.phones, message: options.message },
1275
+ });
1276
+ },
1277
+ };
1278
+ }
1279
+ get storage() {
1280
+ return {
1281
+ upload: async (options) => {
1282
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.STORAGE, options.event, {
1283
+ storage: options.storage,
1284
+ input: options.input,
1285
+ options: { retries: options.retries },
1286
+ });
1287
+ return { file_key: '', url: '' };
1288
+ },
1289
+ download: async (options) => {
1290
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.STORAGE, options.event, {
1291
+ storage: options.storage,
1292
+ input: options.input,
1293
+ });
1294
+ return { content: '', content_type: '', size: 0 };
1295
+ },
1296
+ delete: async (options) => {
1297
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.STORAGE, options.event, {
1298
+ storage: options.storage,
1299
+ input: options.input,
1300
+ });
1301
+ },
1302
+ };
1303
+ }
1304
+ get publish() {
1305
+ return {
1306
+ send: async (options) => {
1307
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.PUBLISH, options.event, {
1308
+ broker: options.broker,
1309
+ input: options.input,
1310
+ options: { retries: options.retries },
1311
+ });
1312
+ },
1313
+ };
1314
+ }
1315
+ get feature() {
1316
+ return {
1317
+ run: async (options) => {
1318
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.FEATURE, options.feature, {
1319
+ input: options.input,
1320
+ options: { retries: options.retries, timeout: options.timeout },
1321
+ });
1322
+ return {};
1323
+ },
1324
+ };
1325
+ }
1326
+ get quota() {
1327
+ return {
1328
+ execute: async (options) => {
1329
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.QUOTA, 'execute', {
1330
+ quota: options.quota,
1331
+ input: options.input,
1332
+ options: { timeout: options.timeout },
1333
+ });
1334
+ return {};
1335
+ },
1336
+ };
1337
+ }
1338
+ get fallback() {
1339
+ return {
1340
+ execute: async (options) => {
1341
+ this._updateCurrentStep(productsBuilder_types_1.WorkflowStepType.FALLBACK, 'execute', {
1342
+ fallback: options.fallback,
1343
+ input: options.input,
1344
+ options: { timeout: options.timeout },
1345
+ });
1346
+ return {};
1347
+ },
1348
+ };
1349
+ }
1350
+ get healthcheck() {
1351
+ return {
1352
+ getStatus: async (tag) => {
1353
+ return { status: 'available', lastChecked: new Date().toISOString(), lastLatency: 0 };
1354
+ },
1355
+ };
1356
+ }
1357
+ get transform() {
1358
+ return {
1359
+ size: (obj) => Object.keys(obj).length,
1360
+ length: (arr) => arr.length,
1361
+ parseJson: (str) => JSON.parse(str),
1362
+ stringify: (obj) => JSON.stringify(obj),
1363
+ upper: (str) => str.toUpperCase(),
1364
+ lower: (str) => str.toLowerCase(),
1365
+ trim: (str) => str.trim(),
1366
+ split: (str, separator) => str.split(separator),
1367
+ join: (arr, separator) => arr.join(separator),
1368
+ now: () => Date.now(),
1369
+ formatDate: (date, format) => new Date(date).toISOString(),
1370
+ };
1371
+ }
1372
+ // ==================== DATA REFERENCES ====================
1373
+ variable(app, key) {
1374
+ return `$Variable{${app}}{${key}}`;
1375
+ }
1376
+ constant(app, key) {
1377
+ return `$Constant{${app}}{${key}}`;
1378
+ }
1379
+ token(key) {
1380
+ return `$Secret{${key}}`;
1381
+ }
1382
+ get auth() {
1383
+ return {};
1384
+ }
1385
+ default(value, fallback) {
1386
+ return value !== null && value !== void 0 ? value : fallback;
1387
+ }
1388
+ // ==================== CONTROL FLOW ====================
1389
+ async sleep(duration) {
1390
+ const ms = typeof duration === 'string' ? this._parseDuration(duration) : duration;
1391
+ this._addControlStep(productsBuilder_types_1.WorkflowStepType.SLEEP, 'sleep', { duration: ms });
1392
+ }
1393
+ async waitForSignal(signal, options) {
1394
+ const signals = Array.isArray(signal) ? signal : [signal];
1395
+ const timeout = (options === null || options === void 0 ? void 0 : options.timeout)
1396
+ ? typeof options.timeout === 'string'
1397
+ ? this._parseDuration(options.timeout)
1398
+ : options.timeout
1399
+ : undefined;
1400
+ this._addControlStep(productsBuilder_types_1.WorkflowStepType.WAIT_FOR_SIGNAL, signals[0], {
1401
+ signals,
1402
+ options: timeout ? { timeout } : undefined,
1403
+ });
1404
+ return {};
1405
+ }
1406
+ async checkpoint(name, metadata) {
1407
+ this._addControlStep(productsBuilder_types_1.WorkflowStepType.CHECKPOINT, name, { metadata });
1408
+ }
1409
+ // ==================== STATE MANAGEMENT ====================
1410
+ setState(key, value) {
1411
+ // No-op during compilation
1412
+ }
1413
+ getState(key) {
1414
+ return undefined;
1415
+ }
1416
+ // ==================== LOGGING ====================
1417
+ get log() {
1418
+ return {
1419
+ debug: (message, data) => { },
1420
+ info: (message, data) => { },
1421
+ warn: (message, data) => { },
1422
+ error: (message, data) => { },
1423
+ };
1424
+ }
1425
+ // ==================== CHILD WORKFLOWS ====================
1426
+ async workflow(childId, tag, input, options) {
1427
+ this._addControlStep(productsBuilder_types_1.WorkflowStepType.CHILD_WORKFLOW, 'execute', {
1428
+ workflow: tag,
1429
+ input,
1430
+ options: options
1431
+ ? {
1432
+ timeout: options.timeout
1433
+ ? typeof options.timeout === 'string'
1434
+ ? this._parseDuration(options.timeout)
1435
+ : options.timeout
1436
+ : undefined,
1437
+ retries: options.retries,
1438
+ }
1439
+ : undefined,
1440
+ });
1441
+ return {};
1442
+ }
1443
+ // ==================== ROLLBACK ====================
1444
+ async triggerRollback(reason) {
1445
+ return { success: true, rolled_back_steps: [], reason };
1446
+ }
1447
+ // ==================== INTERNAL HELPERS ====================
1448
+ _updateCurrentStep(type, event, data) {
1449
+ if (!this._currentStepTag)
1450
+ return;
1451
+ // Find or create the step
1452
+ let step = this._steps.find((s) => s.tag === this._currentStepTag);
1453
+ if (!step) {
1454
+ step = {
1455
+ tag: this._currentStepTag,
1456
+ type,
1457
+ event,
1458
+ input: data.input || {},
1459
+ };
1460
+ this._steps.push(step);
1461
+ }
1462
+ // Update step properties
1463
+ step.type = type;
1464
+ step.event = event;
1465
+ if (data.app)
1466
+ step.app = data.app;
1467
+ if (data.database)
1468
+ step.database = data.database;
1469
+ if (data.graph)
1470
+ step.graph = data.graph;
1471
+ if (data.storage)
1472
+ step.storage = data.storage;
1473
+ if (data.notification)
1474
+ step.notification = data.notification;
1475
+ if (data.broker)
1476
+ step.broker = data.broker;
1477
+ if (data.quota)
1478
+ step.quota = data.quota;
1479
+ if (data.fallback)
1480
+ step.fallback = data.fallback;
1481
+ if (data.workflow)
1482
+ step.workflow = data.workflow;
1483
+ if (data.input)
1484
+ step.input = data.input;
1485
+ if (data.options)
1486
+ step.options = Object.assign(Object.assign({}, step.options), data.options);
1487
+ }
1488
+ _addControlStep(type, event, data) {
1489
+ const tag = `${type}-${this._stepOrder++}`;
1490
+ this._steps.push({
1491
+ tag,
1492
+ type,
1493
+ event,
1494
+ input: data,
1495
+ });
1496
+ }
1497
+ _parseDuration(duration) {
1498
+ const match = duration.match(/^(\d+)(ms|s|m|h|d)$/);
1499
+ if (!match)
1500
+ return parseInt(duration, 10) || 0;
1501
+ const value = parseInt(match[1], 10);
1502
+ const unit = match[2];
1503
+ switch (unit) {
1504
+ case 'ms':
1505
+ return value;
1506
+ case 's':
1507
+ return value * 1000;
1508
+ case 'm':
1509
+ return value * 60 * 1000;
1510
+ case 'h':
1511
+ return value * 60 * 60 * 1000;
1512
+ case 'd':
1513
+ return value * 24 * 60 * 60 * 1000;
1514
+ default:
1515
+ return value;
1516
+ }
1517
+ }
1518
+ /** Get collected steps */
1519
+ getSteps() {
1520
+ return this._steps;
1521
+ }
1522
+ }
1523
+ /**
1524
+ * Compiles code-first workflow definitions to JSON schema
1525
+ * Uses runtime handler tracing to capture step definitions
1526
+ */
1527
+ class WorkflowCompiler {
1528
+ constructor(options) {
1529
+ this.options = options;
1530
+ }
1531
+ /**
1532
+ * Compile the workflow definition to JSON schema
1533
+ * Executes the handler with a recording context to capture step definitions
1534
+ */
1535
+ compile() {
1536
+ // Create recording context with mock input
1537
+ const mockInput = {};
1538
+ const recordingCtx = new RecordingContext(mockInput, this.options.tag);
1539
+ // Execute handler to trace step definitions
1540
+ try {
1541
+ // Run the handler synchronously to capture all step calls
1542
+ // Note: This won't await async operations, but will capture the step structure
1543
+ const handlerPromise = this.options.handler(recordingCtx);
1544
+ // For synchronous tracing, we don't need to await
1545
+ // The recording context captures calls as they're made
1546
+ if (handlerPromise && typeof handlerPromise.then === 'function') {
1547
+ // Handler is async - we capture what we can synchronously
1548
+ // For full async tracing, use compileAsync()
1549
+ }
1550
+ }
1551
+ catch (e) {
1552
+ // Ignore errors during compilation - we're tracing structure, not executing
1553
+ }
1554
+ return {
1555
+ name: this.options.name,
1556
+ tag: this.options.tag,
1557
+ description: this.options.description,
1558
+ input: {},
1559
+ output: {},
1560
+ steps: recordingCtx.getSteps(),
1561
+ signals: this.options.signals
1562
+ ? Object.fromEntries(Object.entries(this.options.signals).map(([name, config]) => [name, { name, input: config.input }]))
1563
+ : undefined,
1564
+ queries: this.options.queries
1565
+ ? Object.fromEntries(Object.entries(this.options.queries).map(([name, config]) => {
1566
+ var _a;
1567
+ return [
1568
+ name,
1569
+ { name, handler: (_a = config.handler) === null || _a === void 0 ? void 0 : _a.toString() },
1570
+ ];
1571
+ }))
1572
+ : undefined,
1573
+ options: this.options.options,
1574
+ envs: this.options.envs,
1575
+ };
1576
+ }
1577
+ /**
1578
+ * Compile the workflow definition asynchronously
1579
+ * Fully awaits the handler to capture all step definitions
1580
+ */
1581
+ async compileAsync() {
1582
+ // Create recording context with mock input
1583
+ const mockInput = {};
1584
+ const recordingCtx = new RecordingContext(mockInput, this.options.tag);
1585
+ // Execute handler to trace step definitions
1586
+ try {
1587
+ await this.options.handler(recordingCtx);
1588
+ }
1589
+ catch (e) {
1590
+ // Ignore errors during compilation - we're tracing structure, not executing
1591
+ }
1592
+ return {
1593
+ name: this.options.name,
1594
+ tag: this.options.tag,
1595
+ description: this.options.description,
1596
+ input: {},
1597
+ output: {},
1598
+ steps: recordingCtx.getSteps(),
1599
+ signals: this.options.signals
1600
+ ? Object.fromEntries(Object.entries(this.options.signals).map(([name, config]) => [name, { name, input: config.input }]))
1601
+ : undefined,
1602
+ queries: this.options.queries
1603
+ ? Object.fromEntries(Object.entries(this.options.queries).map(([name, config]) => {
1604
+ var _a;
1605
+ return [
1606
+ name,
1607
+ { name, handler: (_a = config.handler) === null || _a === void 0 ? void 0 : _a.toString() },
1608
+ ];
1609
+ }))
1610
+ : undefined,
1611
+ options: this.options.options,
1612
+ envs: this.options.envs,
1613
+ };
1614
+ }
1615
+ }
1616
+ // Export singleton instance for convenience
1617
+ exports.workflowService = new WorkflowService();
1618
+ // Default export
1619
+ exports.default = WorkflowService;
1620
+ //# sourceMappingURL=workflows.service.js.map