@vertesia/workflow 0.42.2

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 (406) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +24 -0
  3. package/bin/bundle-workflows.mjs +26 -0
  4. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +32 -0
  5. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  6. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +66 -0
  7. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  8. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +18 -0
  9. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  10. package/lib/cjs/activities/chunkDocument.js +79 -0
  11. package/lib/cjs/activities/chunkDocument.js.map +1 -0
  12. package/lib/cjs/activities/createDocumentFromOther.js +64 -0
  13. package/lib/cjs/activities/createDocumentFromOther.js.map +1 -0
  14. package/lib/cjs/activities/executeInteraction.js +135 -0
  15. package/lib/cjs/activities/executeInteraction.js.map +1 -0
  16. package/lib/cjs/activities/extractDocumentText.js +140 -0
  17. package/lib/cjs/activities/extractDocumentText.js.map +1 -0
  18. package/lib/cjs/activities/generateDocumentProperties.js +59 -0
  19. package/lib/cjs/activities/generateDocumentProperties.js.map +1 -0
  20. package/lib/cjs/activities/generateEmbeddings.js +292 -0
  21. package/lib/cjs/activities/generateEmbeddings.js.map +1 -0
  22. package/lib/cjs/activities/generateImageRendition.js +104 -0
  23. package/lib/cjs/activities/generateImageRendition.js.map +1 -0
  24. package/lib/cjs/activities/generateOrAssignContentType.js +103 -0
  25. package/lib/cjs/activities/generateOrAssignContentType.js.map +1 -0
  26. package/lib/cjs/activities/getObjectFromStore.js +20 -0
  27. package/lib/cjs/activities/getObjectFromStore.js.map +1 -0
  28. package/lib/cjs/activities/index.js +54 -0
  29. package/lib/cjs/activities/index.js.map +1 -0
  30. package/lib/cjs/activities/media/processPdfWithTextract.js +102 -0
  31. package/lib/cjs/activities/media/processPdfWithTextract.js.map +1 -0
  32. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +51 -0
  33. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +1 -0
  34. package/lib/cjs/activities/notifyWebhook.js +34 -0
  35. package/lib/cjs/activities/notifyWebhook.js.map +1 -0
  36. package/lib/cjs/activities/setDocumentStatus.js +15 -0
  37. package/lib/cjs/activities/setDocumentStatus.js.map +1 -0
  38. package/lib/cjs/conversion/TextractProcessor.js +416 -0
  39. package/lib/cjs/conversion/TextractProcessor.js.map +1 -0
  40. package/lib/cjs/conversion/image.js +22 -0
  41. package/lib/cjs/conversion/image.js.map +1 -0
  42. package/lib/cjs/conversion/mutool.js +147 -0
  43. package/lib/cjs/conversion/mutool.js.map +1 -0
  44. package/lib/cjs/conversion/pandoc.js +39 -0
  45. package/lib/cjs/conversion/pandoc.js.map +1 -0
  46. package/lib/cjs/conversion/pdf.js +13 -0
  47. package/lib/cjs/conversion/pdf.js.map +1 -0
  48. package/lib/cjs/dsl/conditions.js +81 -0
  49. package/lib/cjs/dsl/conditions.js.map +1 -0
  50. package/lib/cjs/dsl/dsl-workflow.js +223 -0
  51. package/lib/cjs/dsl/dsl-workflow.js.map +1 -0
  52. package/lib/cjs/dsl/projections.js +59 -0
  53. package/lib/cjs/dsl/projections.js.map +1 -0
  54. package/lib/cjs/dsl/setup/ActivityContext.js +96 -0
  55. package/lib/cjs/dsl/setup/ActivityContext.js.map +1 -0
  56. package/lib/cjs/dsl/setup/fetch/DataProvider.js +51 -0
  57. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +1 -0
  58. package/lib/cjs/dsl/setup/fetch/index.js +16 -0
  59. package/lib/cjs/dsl/setup/fetch/index.js.map +1 -0
  60. package/lib/cjs/dsl/setup/fetch/providers.js +67 -0
  61. package/lib/cjs/dsl/setup/fetch/providers.js.map +1 -0
  62. package/lib/cjs/dsl/test/test-child-workflow.js +10 -0
  63. package/lib/cjs/dsl/test/test-child-workflow.js.map +1 -0
  64. package/lib/cjs/dsl/validation.js +122 -0
  65. package/lib/cjs/dsl/validation.js.map +1 -0
  66. package/lib/cjs/dsl/vars.js +341 -0
  67. package/lib/cjs/dsl/vars.js.map +1 -0
  68. package/lib/cjs/dsl/walk.js +100 -0
  69. package/lib/cjs/dsl/walk.js.map +1 -0
  70. package/lib/cjs/errors.js +36 -0
  71. package/lib/cjs/errors.js.map +1 -0
  72. package/lib/cjs/index.js +43 -0
  73. package/lib/cjs/index.js.map +1 -0
  74. package/lib/cjs/iterative-generation/activities/extractToc.js +47 -0
  75. package/lib/cjs/iterative-generation/activities/extractToc.js.map +1 -0
  76. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +69 -0
  77. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +1 -0
  78. package/lib/cjs/iterative-generation/activities/generatePart.js +73 -0
  79. package/lib/cjs/iterative-generation/activities/generatePart.js.map +1 -0
  80. package/lib/cjs/iterative-generation/activities/generateToc.js +91 -0
  81. package/lib/cjs/iterative-generation/activities/generateToc.js.map +1 -0
  82. package/lib/cjs/iterative-generation/activities/index.js +12 -0
  83. package/lib/cjs/iterative-generation/activities/index.js.map +1 -0
  84. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +55 -0
  85. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  86. package/lib/cjs/iterative-generation/types.js +5 -0
  87. package/lib/cjs/iterative-generation/types.js.map +1 -0
  88. package/lib/cjs/iterative-generation/utils.js +118 -0
  89. package/lib/cjs/iterative-generation/utils.js.map +1 -0
  90. package/lib/cjs/package.json +3 -0
  91. package/lib/cjs/result-types.js +10 -0
  92. package/lib/cjs/result-types.js.map +1 -0
  93. package/lib/cjs/system/generateObjectText.js +89 -0
  94. package/lib/cjs/system/generateObjectText.js.map +1 -0
  95. package/lib/cjs/system/notifyWebhookWorkflow.js +52 -0
  96. package/lib/cjs/system/notifyWebhookWorkflow.js.map +1 -0
  97. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +37 -0
  98. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  99. package/lib/cjs/utils/auth.js +15 -0
  100. package/lib/cjs/utils/auth.js.map +1 -0
  101. package/lib/cjs/utils/blobs.js +63 -0
  102. package/lib/cjs/utils/blobs.js.map +1 -0
  103. package/lib/cjs/utils/client.js +25 -0
  104. package/lib/cjs/utils/client.js.map +1 -0
  105. package/lib/cjs/utils/expand-vars.js +33 -0
  106. package/lib/cjs/utils/expand-vars.js.map +1 -0
  107. package/lib/cjs/utils/memory.js +72 -0
  108. package/lib/cjs/utils/memory.js.map +1 -0
  109. package/lib/cjs/utils/tokens.js +38 -0
  110. package/lib/cjs/utils/tokens.js.map +1 -0
  111. package/lib/cjs/vars.js +20 -0
  112. package/lib/cjs/vars.js.map +1 -0
  113. package/lib/cjs/workflows.js +17 -0
  114. package/lib/cjs/workflows.js.map +1 -0
  115. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +29 -0
  116. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  117. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +63 -0
  118. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  119. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +15 -0
  120. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  121. package/lib/esm/activities/chunkDocument.js +76 -0
  122. package/lib/esm/activities/chunkDocument.js.map +1 -0
  123. package/lib/esm/activities/createDocumentFromOther.js +58 -0
  124. package/lib/esm/activities/createDocumentFromOther.js.map +1 -0
  125. package/lib/esm/activities/executeInteraction.js +131 -0
  126. package/lib/esm/activities/executeInteraction.js.map +1 -0
  127. package/lib/esm/activities/extractDocumentText.js +137 -0
  128. package/lib/esm/activities/extractDocumentText.js.map +1 -0
  129. package/lib/esm/activities/generateDocumentProperties.js +56 -0
  130. package/lib/esm/activities/generateDocumentProperties.js.map +1 -0
  131. package/lib/esm/activities/generateEmbeddings.js +256 -0
  132. package/lib/esm/activities/generateEmbeddings.js.map +1 -0
  133. package/lib/esm/activities/generateImageRendition.js +98 -0
  134. package/lib/esm/activities/generateImageRendition.js.map +1 -0
  135. package/lib/esm/activities/generateOrAssignContentType.js +100 -0
  136. package/lib/esm/activities/generateOrAssignContentType.js.map +1 -0
  137. package/lib/esm/activities/getObjectFromStore.js +17 -0
  138. package/lib/esm/activities/getObjectFromStore.js.map +1 -0
  139. package/lib/esm/activities/index.js +21 -0
  140. package/lib/esm/activities/index.js.map +1 -0
  141. package/lib/esm/activities/media/processPdfWithTextract.js +98 -0
  142. package/lib/esm/activities/media/processPdfWithTextract.js.map +1 -0
  143. package/lib/esm/activities/media/transcribeMediaWithGladia.js +48 -0
  144. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +1 -0
  145. package/lib/esm/activities/notifyWebhook.js +31 -0
  146. package/lib/esm/activities/notifyWebhook.js.map +1 -0
  147. package/lib/esm/activities/setDocumentStatus.js +12 -0
  148. package/lib/esm/activities/setDocumentStatus.js.map +1 -0
  149. package/lib/esm/conversion/TextractProcessor.js +409 -0
  150. package/lib/esm/conversion/TextractProcessor.js.map +1 -0
  151. package/lib/esm/conversion/image.js +16 -0
  152. package/lib/esm/conversion/image.js.map +1 -0
  153. package/lib/esm/conversion/mutool.js +139 -0
  154. package/lib/esm/conversion/mutool.js.map +1 -0
  155. package/lib/esm/conversion/pandoc.js +36 -0
  156. package/lib/esm/conversion/pandoc.js.map +1 -0
  157. package/lib/esm/conversion/pdf.js +7 -0
  158. package/lib/esm/conversion/pdf.js.map +1 -0
  159. package/lib/esm/dsl/conditions.js +75 -0
  160. package/lib/esm/dsl/conditions.js.map +1 -0
  161. package/lib/esm/dsl/dsl-workflow.js +216 -0
  162. package/lib/esm/dsl/dsl-workflow.js.map +1 -0
  163. package/lib/esm/dsl/projections.js +55 -0
  164. package/lib/esm/dsl/projections.js.map +1 -0
  165. package/lib/esm/dsl/setup/ActivityContext.js +91 -0
  166. package/lib/esm/dsl/setup/ActivityContext.js.map +1 -0
  167. package/lib/esm/dsl/setup/fetch/DataProvider.js +47 -0
  168. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +1 -0
  169. package/lib/esm/dsl/setup/fetch/index.js +12 -0
  170. package/lib/esm/dsl/setup/fetch/index.js.map +1 -0
  171. package/lib/esm/dsl/setup/fetch/providers.js +61 -0
  172. package/lib/esm/dsl/setup/fetch/providers.js.map +1 -0
  173. package/lib/esm/dsl/test/test-child-workflow.js +5 -0
  174. package/lib/esm/dsl/test/test-child-workflow.js.map +1 -0
  175. package/lib/esm/dsl/validation.js +118 -0
  176. package/lib/esm/dsl/validation.js.map +1 -0
  177. package/lib/esm/dsl/vars.js +335 -0
  178. package/lib/esm/dsl/vars.js.map +1 -0
  179. package/lib/esm/dsl/walk.js +96 -0
  180. package/lib/esm/dsl/walk.js.map +1 -0
  181. package/lib/esm/errors.js +30 -0
  182. package/lib/esm/errors.js.map +1 -0
  183. package/lib/esm/index.js +25 -0
  184. package/lib/esm/index.js.map +1 -0
  185. package/lib/esm/iterative-generation/activities/extractToc.js +44 -0
  186. package/lib/esm/iterative-generation/activities/extractToc.js.map +1 -0
  187. package/lib/esm/iterative-generation/activities/finalizeOutput.js +66 -0
  188. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +1 -0
  189. package/lib/esm/iterative-generation/activities/generatePart.js +70 -0
  190. package/lib/esm/iterative-generation/activities/generatePart.js.map +1 -0
  191. package/lib/esm/iterative-generation/activities/generateToc.js +88 -0
  192. package/lib/esm/iterative-generation/activities/generateToc.js.map +1 -0
  193. package/lib/esm/iterative-generation/activities/index.js +5 -0
  194. package/lib/esm/iterative-generation/activities/index.js.map +1 -0
  195. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +52 -0
  196. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  197. package/lib/esm/iterative-generation/types.js +2 -0
  198. package/lib/esm/iterative-generation/types.js.map +1 -0
  199. package/lib/esm/iterative-generation/utils.js +109 -0
  200. package/lib/esm/iterative-generation/utils.js.map +1 -0
  201. package/lib/esm/result-types.js +7 -0
  202. package/lib/esm/result-types.js.map +1 -0
  203. package/lib/esm/system/generateObjectText.js +86 -0
  204. package/lib/esm/system/generateObjectText.js.map +1 -0
  205. package/lib/esm/system/notifyWebhookWorkflow.js +49 -0
  206. package/lib/esm/system/notifyWebhookWorkflow.js.map +1 -0
  207. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +34 -0
  208. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  209. package/lib/esm/utils/auth.js +8 -0
  210. package/lib/esm/utils/auth.js.map +1 -0
  211. package/lib/esm/utils/blobs.js +52 -0
  212. package/lib/esm/utils/blobs.js.map +1 -0
  213. package/lib/esm/utils/client.js +22 -0
  214. package/lib/esm/utils/client.js.map +1 -0
  215. package/lib/esm/utils/expand-vars.js +30 -0
  216. package/lib/esm/utils/expand-vars.js.map +1 -0
  217. package/lib/esm/utils/memory.js +60 -0
  218. package/lib/esm/utils/memory.js.map +1 -0
  219. package/lib/esm/utils/tokens.js +34 -0
  220. package/lib/esm/utils/tokens.js.map +1 -0
  221. package/lib/esm/vars.js +4 -0
  222. package/lib/esm/vars.js.map +1 -0
  223. package/lib/esm/workflows.js +9 -0
  224. package/lib/esm/workflows.js.map +1 -0
  225. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +17 -0
  226. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +1 -0
  227. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +29 -0
  228. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +1 -0
  229. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +19 -0
  230. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +1 -0
  231. package/lib/types/activities/chunkDocument.d.ts +18 -0
  232. package/lib/types/activities/chunkDocument.d.ts.map +1 -0
  233. package/lib/types/activities/createDocumentFromOther.d.ts +21 -0
  234. package/lib/types/activities/createDocumentFromOther.d.ts.map +1 -0
  235. package/lib/types/activities/executeInteraction.d.ts +40 -0
  236. package/lib/types/activities/executeInteraction.d.ts.map +1 -0
  237. package/lib/types/activities/extractDocumentText.d.ts +9 -0
  238. package/lib/types/activities/extractDocumentText.d.ts.map +1 -0
  239. package/lib/types/activities/generateDocumentProperties.d.ts +32 -0
  240. package/lib/types/activities/generateDocumentProperties.d.ts.map +1 -0
  241. package/lib/types/activities/generateEmbeddings.d.ts +49 -0
  242. package/lib/types/activities/generateEmbeddings.d.ts.map +1 -0
  243. package/lib/types/activities/generateImageRendition.d.ts +17 -0
  244. package/lib/types/activities/generateImageRendition.d.ts.map +1 -0
  245. package/lib/types/activities/generateOrAssignContentType.d.ts +44 -0
  246. package/lib/types/activities/generateOrAssignContentType.d.ts.map +1 -0
  247. package/lib/types/activities/getObjectFromStore.d.ts +14 -0
  248. package/lib/types/activities/getObjectFromStore.d.ts.map +1 -0
  249. package/lib/types/activities/index.d.ts +21 -0
  250. package/lib/types/activities/index.d.ts.map +1 -0
  251. package/lib/types/activities/media/processPdfWithTextract.d.ts +26 -0
  252. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +1 -0
  253. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +14 -0
  254. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +1 -0
  255. package/lib/types/activities/notifyWebhook.d.ts +17 -0
  256. package/lib/types/activities/notifyWebhook.d.ts.map +1 -0
  257. package/lib/types/activities/setDocumentStatus.d.ts +15 -0
  258. package/lib/types/activities/setDocumentStatus.d.ts.map +1 -0
  259. package/lib/types/conversion/TextractProcessor.d.ts +45 -0
  260. package/lib/types/conversion/TextractProcessor.d.ts.map +1 -0
  261. package/lib/types/conversion/image.d.ts +9 -0
  262. package/lib/types/conversion/image.d.ts.map +1 -0
  263. package/lib/types/conversion/mutool.d.ts +19 -0
  264. package/lib/types/conversion/mutool.d.ts.map +1 -0
  265. package/lib/types/conversion/pandoc.d.ts +2 -0
  266. package/lib/types/conversion/pandoc.d.ts.map +1 -0
  267. package/lib/types/conversion/pdf.d.ts +2 -0
  268. package/lib/types/conversion/pdf.d.ts.map +1 -0
  269. package/lib/types/dsl/conditions.d.ts +2 -0
  270. package/lib/types/dsl/conditions.d.ts.map +1 -0
  271. package/lib/types/dsl/dsl-workflow.d.ts +5 -0
  272. package/lib/types/dsl/dsl-workflow.d.ts.map +1 -0
  273. package/lib/types/dsl/projections.d.ts +4 -0
  274. package/lib/types/dsl/projections.d.ts.map +1 -0
  275. package/lib/types/dsl/setup/ActivityContext.d.ts +14 -0
  276. package/lib/types/dsl/setup/ActivityContext.d.ts.map +1 -0
  277. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +9 -0
  278. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +1 -0
  279. package/lib/types/dsl/setup/fetch/index.d.ts +6 -0
  280. package/lib/types/dsl/setup/fetch/index.d.ts.map +1 -0
  281. package/lib/types/dsl/setup/fetch/providers.d.ts +25 -0
  282. package/lib/types/dsl/setup/fetch/providers.d.ts.map +1 -0
  283. package/lib/types/dsl/test/test-child-workflow.d.ts +4 -0
  284. package/lib/types/dsl/test/test-child-workflow.d.ts.map +1 -0
  285. package/lib/types/dsl/validation.d.ts +4 -0
  286. package/lib/types/dsl/validation.d.ts.map +1 -0
  287. package/lib/types/dsl/vars.d.ts +48 -0
  288. package/lib/types/dsl/vars.d.ts.map +1 -0
  289. package/lib/types/dsl/walk.d.ts +18 -0
  290. package/lib/types/dsl/walk.d.ts.map +1 -0
  291. package/lib/types/errors.d.ts +16 -0
  292. package/lib/types/errors.d.ts.map +1 -0
  293. package/lib/types/index.d.ts +24 -0
  294. package/lib/types/index.d.ts.map +1 -0
  295. package/lib/types/iterative-generation/activities/extractToc.d.ts +10 -0
  296. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +1 -0
  297. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +3 -0
  298. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +1 -0
  299. package/lib/types/iterative-generation/activities/generatePart.d.ts +3 -0
  300. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +1 -0
  301. package/lib/types/iterative-generation/activities/generateToc.d.ts +4 -0
  302. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +1 -0
  303. package/lib/types/iterative-generation/activities/index.d.ts +5 -0
  304. package/lib/types/iterative-generation/activities/index.d.ts.map +1 -0
  305. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +3 -0
  306. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +1 -0
  307. package/lib/types/iterative-generation/types.d.ts +79 -0
  308. package/lib/types/iterative-generation/types.d.ts.map +1 -0
  309. package/lib/types/iterative-generation/utils.d.ts +27 -0
  310. package/lib/types/iterative-generation/utils.d.ts.map +1 -0
  311. package/lib/types/result-types.d.ts +22 -0
  312. package/lib/types/result-types.d.ts.map +1 -0
  313. package/lib/types/system/generateObjectText.d.ts +4 -0
  314. package/lib/types/system/generateObjectText.d.ts.map +1 -0
  315. package/lib/types/system/notifyWebhookWorkflow.d.ts +6 -0
  316. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +1 -0
  317. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +40 -0
  318. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +1 -0
  319. package/lib/types/utils/auth.d.ts +4 -0
  320. package/lib/types/utils/auth.d.ts.map +1 -0
  321. package/lib/types/utils/blobs.d.ts +8 -0
  322. package/lib/types/utils/blobs.d.ts.map +1 -0
  323. package/lib/types/utils/client.d.ts +7 -0
  324. package/lib/types/utils/client.d.ts.map +1 -0
  325. package/lib/types/utils/expand-vars.d.ts +8 -0
  326. package/lib/types/utils/expand-vars.d.ts.map +1 -0
  327. package/lib/types/utils/memory.d.ts +12 -0
  328. package/lib/types/utils/memory.d.ts.map +1 -0
  329. package/lib/types/utils/tokens.d.ts +11 -0
  330. package/lib/types/utils/tokens.d.ts.map +1 -0
  331. package/lib/types/vars.d.ts +3 -0
  332. package/lib/types/vars.d.ts.map +1 -0
  333. package/lib/types/workflows.d.ts +9 -0
  334. package/lib/types/workflows.d.ts.map +1 -0
  335. package/lib/workflows-bundle.js +18394 -0
  336. package/package.json +109 -0
  337. package/src/activities/advanced/createDocumentTypeFromInteractionRun.ts +54 -0
  338. package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +97 -0
  339. package/src/activities/advanced/updateDocumentFromInteractionRun.ts +34 -0
  340. package/src/activities/chunkDocument.ts +124 -0
  341. package/src/activities/createDocumentFromOther.ts +92 -0
  342. package/src/activities/executeInteraction.ts +191 -0
  343. package/src/activities/extractDocumentText.ts +174 -0
  344. package/src/activities/generateDocumentProperties.ts +93 -0
  345. package/src/activities/generateEmbeddings.ts +345 -0
  346. package/src/activities/generateImageRendition.ts +134 -0
  347. package/src/activities/generateOrAssignContentType.ts +152 -0
  348. package/src/activities/getObjectFromStore.ts +31 -0
  349. package/src/activities/index.ts +21 -0
  350. package/src/activities/media/processPdfWithTextract.ts +141 -0
  351. package/src/activities/media/transcribeMediaWithGladia.ts +83 -0
  352. package/src/activities/notifyWebhook.test.ts +32 -0
  353. package/src/activities/notifyWebhook.ts +51 -0
  354. package/src/activities/setDocumentStatus.ts +25 -0
  355. package/src/conversion/TextractProcessor.ts +505 -0
  356. package/src/conversion/image.test.ts +26 -0
  357. package/src/conversion/image.ts +22 -0
  358. package/src/conversion/mutool.test.ts +74 -0
  359. package/src/conversion/mutool.ts +180 -0
  360. package/src/conversion/pandoc.test.ts +22 -0
  361. package/src/conversion/pandoc.ts +44 -0
  362. package/src/conversion/pdf.test.ts +35 -0
  363. package/src/conversion/pdf.ts +8 -0
  364. package/src/dsl/conditions.ts +76 -0
  365. package/src/dsl/dsl-workflow.test.ts +58 -0
  366. package/src/dsl/dsl-workflow.ts +235 -0
  367. package/src/dsl/ms.d.ts +11 -0
  368. package/src/dsl/projections.test.ts +159 -0
  369. package/src/dsl/projections.ts +72 -0
  370. package/src/dsl/setup/ActivityContext.ts +106 -0
  371. package/src/dsl/setup/fetch/DataProvider.ts +45 -0
  372. package/src/dsl/setup/fetch/index.ts +19 -0
  373. package/src/dsl/setup/fetch/providers.ts +67 -0
  374. package/src/dsl/test/test-child-workflow.ts +6 -0
  375. package/src/dsl/validation.test.ts +257 -0
  376. package/src/dsl/validation.ts +125 -0
  377. package/src/dsl/vars.test.ts +245 -0
  378. package/src/dsl/vars.ts +340 -0
  379. package/src/dsl/walk.test.ts +81 -0
  380. package/src/dsl/walk.ts +103 -0
  381. package/src/dsl/workflow-exec-child.test.ts +182 -0
  382. package/src/dsl/workflow-fetch.test.ts +135 -0
  383. package/src/dsl/workflow-import.test.ts +89 -0
  384. package/src/dsl/workflow.test.ts +110 -0
  385. package/src/errors.ts +24 -0
  386. package/src/index.ts +27 -0
  387. package/src/iterative-generation/activities/extractToc.ts +49 -0
  388. package/src/iterative-generation/activities/finalizeOutput.ts +77 -0
  389. package/src/iterative-generation/activities/generatePart.ts +82 -0
  390. package/src/iterative-generation/activities/generateToc.ts +98 -0
  391. package/src/iterative-generation/activities/index.ts +4 -0
  392. package/src/iterative-generation/iterativeGenerationWorkflow.ts +67 -0
  393. package/src/iterative-generation/types.ts +99 -0
  394. package/src/iterative-generation/utils.ts +123 -0
  395. package/src/result-types.ts +25 -0
  396. package/src/system/generateObjectText.ts +109 -0
  397. package/src/system/notifyWebhookWorkflow.ts +64 -0
  398. package/src/system/recalculateEmbeddingsWorkflow.ts +46 -0
  399. package/src/utils/auth.ts +10 -0
  400. package/src/utils/blobs.ts +58 -0
  401. package/src/utils/client.ts +31 -0
  402. package/src/utils/expand-vars.ts +31 -0
  403. package/src/utils/memory.ts +66 -0
  404. package/src/utils/tokens.ts +44 -0
  405. package/src/vars.ts +3 -0
  406. package/src/workflows.ts +9 -0
@@ -0,0 +1,180 @@
1
+ import { log } from '@temporalio/activity';
2
+ import { spawn } from 'child_process';
3
+ import fs from 'fs';
4
+ import tmp from 'tmp';
5
+
6
+
7
+
8
+ /**
9
+ * Convert a pdf file to text
10
+ * TODO: pass file reference instead of Buffer
11
+ */
12
+
13
+ export function mutoolPdfToText(buffer: Buffer): Promise<string> {
14
+
15
+ const inputFile = tmp.fileSync({ postfix: '.pdf' });
16
+ const targetFileName = tmp.tmpNameSync({ postfix: '.txt' });
17
+
18
+ fs.writeSync(inputFile.fd, buffer);
19
+
20
+ return new Promise((resolve, reject) => {
21
+
22
+
23
+ log.info("Converting pdf to text", { inputFile: inputFile.name, targetFileName });
24
+
25
+ const command = spawn("mutool", ["convert", "-o", targetFileName, inputFile.name]);
26
+
27
+ command.on('exit', function (code) {
28
+ if (code) {
29
+ reject(new Error(`mutool exited with code ${code}`));
30
+ }
31
+ });
32
+
33
+
34
+ command.on('close', function (code) {
35
+ if (code) {
36
+ reject(new Error(`mutool exited with code ${code}`));
37
+ } else {
38
+ return fs.readFile(targetFileName, 'utf8', (err, data) => {
39
+ if (err) {
40
+ reject(err);
41
+ }
42
+ return resolve(data);
43
+ });
44
+ };
45
+ });
46
+
47
+ command.on('error', (err) => {
48
+ reject(err);
49
+ });
50
+
51
+ });
52
+
53
+ }
54
+
55
+ /**
56
+ *
57
+ * Convert a pdf files to images (one image per page), as PNG format
58
+ *
59
+ * @param file
60
+ * @param pages
61
+ * @returns
62
+ */
63
+ export async function pdfToImages(file: Buffer | string, pages?: number[]): Promise<string[]> {
64
+
65
+ const workDir = tmp.dirSync();
66
+ log.info(`Converting pdf to images`, { workDir: workDir.name, input_type: typeof file, pages });
67
+
68
+ if (file instanceof Buffer) {
69
+ fs.writeFileSync(`${workDir.name}/input.pdf`, file);
70
+ }
71
+ const filename = typeof file === 'string' ? file : `${workDir.name}/input.pdf`;
72
+
73
+ const args = [
74
+ "draw",
75
+ "-o", `${workDir.name}/page-%d.png`,
76
+ filename,
77
+ ];
78
+
79
+ if (pages) {
80
+ args.push(pages.join(','));
81
+ }
82
+
83
+ return new Promise((resolve, reject) => {
84
+
85
+ const command = spawn("mutool", args);
86
+ log.info(`Executing mutool command`, { workDir: workDir.name, filename, command: command.spawnargs });
87
+
88
+ let errors = '';
89
+
90
+ command.stderr.on('data', (data) => {
91
+ errors += data;
92
+ });
93
+
94
+ command.on('exit', function (code) {
95
+
96
+ if (code) {
97
+ log.error(`mutool exited with code ${code}`, { errors });
98
+ reject(new Error(`mutool exited with code ${code}`));
99
+ }
100
+ });
101
+
102
+ command.on('close', function (code) {
103
+ if (code) {
104
+ reject(new Error(`mutool finished with code ${code}`));
105
+ } else {
106
+ const files = fs.readdirSync(workDir.name);
107
+ const images = files.filter(f => f.endsWith('.png')).map(f => `${workDir.name}/${f}`);
108
+ log.info(`Converted pdf to ${images.length} images`, files);
109
+ return resolve(images);
110
+ };
111
+ });
112
+
113
+ command.on('error', (err) => {
114
+ reject(err);
115
+ });
116
+
117
+ });
118
+
119
+ }
120
+
121
+
122
+ /**
123
+ * Get somes pages from a PDF to create a new one
124
+ */
125
+
126
+ export async function pdfExtractPages(file: Buffer | string, pages: number[]): Promise<string> {
127
+
128
+ const workDir = tmp.dirSync();
129
+ log.info(`Getting pages from pdf`, { workDir: workDir.name, input_type: typeof file, pages });
130
+
131
+ if (file instanceof Buffer) {
132
+ fs.writeFileSync(`${workDir.name}/input.pdf`, file);
133
+ }
134
+ const filename = typeof file === 'string' ? file : `${workDir.name}/input.pdf`;
135
+
136
+ const args = [
137
+ "merge",
138
+ "-o", `${workDir.name}/output.pdf`,
139
+ "-O", "garbage=compact,sanitize",
140
+ filename,
141
+ pages.join(','),
142
+ ];
143
+
144
+ return new Promise((resolve, reject) => {
145
+
146
+ const command = spawn("mutool", args);
147
+ log.info(`Executing mutool command`, { workDir: workDir.name, filename, command: command.spawnargs });
148
+
149
+ let errors = '';
150
+
151
+ command.stderr.on('data', (data) => {
152
+ errors += data;
153
+ });
154
+
155
+ command.on('exit', function (code) {
156
+
157
+ if (code) {
158
+ log.error(`mutool exited with code ${code}`, { errors });
159
+ reject(new Error(`mutool exited with code ${code}`));
160
+ }
161
+ });
162
+
163
+ command.on('close', function (code) {
164
+ if (code) {
165
+ reject(new Error(`mutool finished with code ${code}`));
166
+ } else {
167
+ const file = `${workDir.name}/output.pdf`;
168
+ log.info(`Extracted pages from pdf`, { pages, file });
169
+ return resolve(file);
170
+ };
171
+ });
172
+
173
+ command.on('error', (err) => {
174
+ reject(err);
175
+ });
176
+
177
+ });
178
+
179
+
180
+ }
@@ -0,0 +1,22 @@
1
+ import { MockActivityEnvironment, TestWorkflowEnvironment } from '@temporalio/testing';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { beforeAll, expect, test } from 'vitest';
5
+ import { manyToMarkdown } from '../conversion/pandoc';
6
+
7
+
8
+ let testEnv: TestWorkflowEnvironment;
9
+ let activityContext: MockActivityEnvironment;
10
+
11
+ beforeAll(async () => {
12
+ testEnv = await TestWorkflowEnvironment.createLocal();
13
+ activityContext = new MockActivityEnvironment();
14
+ });
15
+
16
+
17
+ // Add more test cases for other file types (ODT, DOCX) if needed
18
+ test('should convert docx to markdown', async () => {
19
+ const docx = fs.readFileSync(path.join(__dirname, '../../fixtures', 'us-ciia.docx'));
20
+ const result = await activityContext.run(manyToMarkdown, Buffer.from(docx), 'docx');
21
+ expect(result).to.include('confidential');
22
+ });
@@ -0,0 +1,44 @@
1
+ import { log } from '@temporalio/activity';
2
+ import { spawn } from 'child_process';
3
+ import { PassThrough } from 'stream';
4
+
5
+
6
+ export function manyToMarkdown(buffer: Buffer, fromFormat: string): Promise<string> {
7
+
8
+ const fromType = undefined;
9
+
10
+ return new Promise((resolve, reject) => {
11
+ log.info(`Converting ${fromType} to markdown`);
12
+ const input = new PassThrough();
13
+ input.end(buffer);
14
+
15
+ let result: string[] = [];
16
+
17
+ const command = spawn("pandoc", ["-t", "markdown", '-f', fromFormat], {
18
+ stdio: 'pipe',
19
+ });
20
+ input.pipe(command.stdin);
21
+
22
+ command.stdout.on('data', function (data: string) {
23
+ result.push(data.toString());
24
+ });
25
+ command.on('exit', function (code) {
26
+ if (code) {
27
+ reject(new Error(`pandoc exited with code ${code}`));
28
+ }
29
+ });
30
+ command.on('close', function (code) {
31
+ if (code) {
32
+ reject(new Error(`pandoc exited with code ${code}`));
33
+ } else {
34
+ resolve(result.join(''))
35
+ }
36
+ });
37
+
38
+ command.on('error', (err) => {
39
+ reject(err);
40
+ });
41
+
42
+ });
43
+
44
+ }
@@ -0,0 +1,35 @@
1
+ import { MockActivityEnvironment, TestWorkflowEnvironment } from '@temporalio/testing';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { beforeAll, expect, test } from 'vitest';
5
+ import { trasformPdfToMarkdown } from '../conversion/pdf';
6
+
7
+
8
+ let testEnv: TestWorkflowEnvironment;
9
+ let activityContext: MockActivityEnvironment;
10
+
11
+ beforeAll(async () => {
12
+ //testEnv = await TestWorkflowEnvironment.createLocal();
13
+ activityContext = new MockActivityEnvironment();
14
+ });
15
+
16
+
17
+ test('Converts a PDF to markdown', async () => {
18
+ const pdfPath = path.resolve(__dirname, '../../fixtures', 'test-pdf1.pdf');
19
+ const pdfBuffer = fs.readFileSync(pdfPath);
20
+ const result = await activityContext.run(trasformPdfToMarkdown, pdfBuffer);
21
+
22
+ expect(result).toContain('America');
23
+ });
24
+
25
+ // https://github.com/becomposable/studio/issues/432 Skip tests
26
+ // The file "test-pdf2.pdf" could not be opened. It may be damanged or use a file format that
27
+ // Preview doesn't recognize.
28
+ test.skip('Converts another PDF to markdown', async () => {
29
+ const pdfPath = path.resolve(__dirname, '../../fixtures', 'test-pdf2.pdf');
30
+ const pdfBuffer = fs.readFileSync(pdfPath);
31
+ const result = await activityContext.run(trasformPdfToMarkdown, pdfBuffer);
32
+
33
+ expect(result).toContain('America');
34
+
35
+ });
@@ -0,0 +1,8 @@
1
+ import pdf2md from "@opendocsg/pdf2md";
2
+
3
+ const pdf2mdFn = pdf2md as unknown as (buffer: Uint8Array) => Promise<string>;
4
+
5
+ export function trasformPdfToMarkdown(buffer: Buffer) {
6
+ const arr = new Uint8Array(buffer);
7
+ return pdf2mdFn(arr);
8
+ }
@@ -0,0 +1,76 @@
1
+ import equal from 'fast-deep-equal';
2
+
3
+ function $exists(value: any, arg: boolean) {
4
+ return (value !== undefined) === arg;
5
+ }
6
+ function $null(value: any, arg: boolean) {
7
+ return (value == null) === arg;
8
+ }
9
+
10
+ function $eq(value: any, arg: any) {
11
+ if (Array.isArray(arg)) {
12
+ return equal(value, arg);
13
+ } else if (typeof arg === 'object') {
14
+ return equal(value, arg);
15
+ } else {
16
+ return value === arg;
17
+ }
18
+ }
19
+ function $ne(value: any, arg: any) {
20
+ return !$eq(value, arg);
21
+ }
22
+ function $or(value: any, arg: any[]) {
23
+ return arg.some(c => matchCondition(value, c));
24
+ }
25
+ function $in(value: any, arg: any[]) {
26
+ return arg.includes(value);
27
+ }
28
+ function $nin(value: any, arg: any[]) {
29
+ return !$in(value, arg);
30
+ }
31
+ function $regexp(value: string, arg: string) {
32
+ return new RegExp(arg).test(value);
33
+ }
34
+ function $endsWith(value: string, arg: string) {
35
+ return value.endsWith(arg);
36
+ }
37
+ function $startsWith(value: string, arg: string) {
38
+ return value.startsWith(arg);
39
+ }
40
+ function $contains(value: string, arg: string) {
41
+ return value.includes(arg);
42
+ }
43
+ function $lt(value: number, arg: number) {
44
+ return value < arg;
45
+ }
46
+ function $gt(value: number, arg: number) {
47
+ return value > arg;
48
+ }
49
+ function $lte(value: number, arg: number) {
50
+ return value <= arg;
51
+ }
52
+ function $gte(value: number, arg: number) {
53
+ return value >= arg;
54
+ }
55
+
56
+ const conditionFns: Record<string, any> = {
57
+ $exists, $null,
58
+ $eq, $ne,
59
+ $in, $nin,
60
+ $regexp, $startsWith, $endsWith, $contains,
61
+ $lt, $gt, $lte, $gte,
62
+ $or,
63
+ }
64
+
65
+ export function matchCondition(value: any, conditions: Record<string, any>) {
66
+ for (const key of Object.keys(conditions)) {
67
+ const cond = conditionFns[key];
68
+ if (!cond) {
69
+ throw new Error(`Unknown condition: ${key}`);
70
+ }
71
+ if (!cond(value, conditions[key])) {
72
+ return false;
73
+ }
74
+ }
75
+ return true;
76
+ }
@@ -0,0 +1,58 @@
1
+ import { describe, test, expect } from "vitest";
2
+ import { computeActivityOptions } from "./dsl-workflow.ts";
3
+
4
+ describe('Workflow DSL', () => {
5
+ test('compute activity options without custom options', () => {
6
+ expect(computeActivityOptions({}, {
7
+ startToCloseTimeout: 1000,
8
+ scheduleToCloseTimeout: 2000,
9
+ scheduleToStartTimeout: 3000,
10
+ retry: {
11
+ initialInterval: 4000,
12
+ maximumInterval: 5000,
13
+ maximumAttempts: 6,
14
+ backoffCoefficient: 7,
15
+ nonRetryableErrorTypes: ['error']
16
+ }
17
+ })).toEqual({
18
+ startToCloseTimeout: 1000,
19
+ scheduleToCloseTimeout: 2000,
20
+ scheduleToStartTimeout: 3000,
21
+ retry: {
22
+ initialInterval: 4000,
23
+ maximumInterval: 5000,
24
+ maximumAttempts: 6,
25
+ backoffCoefficient: 7,
26
+ nonRetryableErrorTypes: ['error']
27
+ }
28
+ })
29
+ })
30
+
31
+ test('compute activity options with some custom options', () => {
32
+ expect(computeActivityOptions({
33
+ startToCloseTimeout: 100,
34
+ }, {
35
+ startToCloseTimeout: 1000,
36
+ scheduleToCloseTimeout: 2000,
37
+ scheduleToStartTimeout: 3000,
38
+ retry: {
39
+ initialInterval: 4000,
40
+ maximumInterval: 5000,
41
+ maximumAttempts: 6,
42
+ backoffCoefficient: 7,
43
+ nonRetryableErrorTypes: ['error']
44
+ }
45
+ })).toEqual({
46
+ startToCloseTimeout: `100ms`, // custom value
47
+ scheduleToCloseTimeout: 2000,
48
+ scheduleToStartTimeout: 3000,
49
+ retry: {
50
+ initialInterval: 4000,
51
+ maximumInterval: 5000,
52
+ maximumAttempts: 6,
53
+ backoffCoefficient: 7,
54
+ nonRetryableErrorTypes: ['error']
55
+ }
56
+ })
57
+ })
58
+ });
@@ -0,0 +1,235 @@
1
+ import {
2
+ DSLActivityExecutionPayload,
3
+ DSLActivityOptions,
4
+ DSLActivitySpec,
5
+ DSLChildWorkflowStep,
6
+ DSLWorkflowExecutionPayload,
7
+ WorkflowExecutionPayload
8
+ } from "@vertesia/common";
9
+ import { ActivityInterfaceFor, ActivityOptions, executeChild, log, proxyActivities, startChild, UntypedActivities } from "@temporalio/workflow";
10
+ import ms, { StringValue } from 'ms';
11
+ import { ActivityParamNotFound, NoDocumentFound, WorkflowParamNotFound } from "../errors.js";
12
+ import { Vars } from "./vars.js";
13
+
14
+ interface BaseActivityPayload extends WorkflowExecutionPayload {
15
+ workflow_name: string;
16
+ debug_mode?: boolean;
17
+ }
18
+
19
+ function dslActivityPayload(basePayload: BaseActivityPayload, activity: DSLActivitySpec, params: Record<string, any> = {}) {
20
+ return {
21
+ ...basePayload,
22
+ activity,
23
+ params,
24
+ } as DSLActivityExecutionPayload
25
+ }
26
+
27
+ export async function dslWorkflow(payload: DSLWorkflowExecutionPayload) {
28
+
29
+ const definition = payload.workflow;
30
+ if (!definition) {
31
+ throw new WorkflowParamNotFound("workflow");
32
+ }
33
+ // the base payload wiull be used to create the activities payload
34
+ const basePayload: BaseActivityPayload = {
35
+ ...payload,
36
+ workflow_name: definition.name,
37
+ debug_mode: !!definition.debug_mode,
38
+ }
39
+ delete (basePayload as any).workflow;
40
+
41
+ const defaultOptions: ActivityOptions = {
42
+ ...convertDSLActivityOptions(definition.options),
43
+ startToCloseTimeout: "5 minute",
44
+ retry: {
45
+ initialInterval: '30s',
46
+ backoffCoefficient: 2,
47
+ maximumAttempts: 20,
48
+ maximumInterval: 100 * 30 * 1000, //ms
49
+ nonRetryableErrorTypes: [
50
+ NoDocumentFound.name,
51
+ ActivityParamNotFound.name,
52
+ WorkflowParamNotFound.name,
53
+ ],
54
+ },
55
+ };
56
+ log.debug("Global activity options", {
57
+ activityOptions: defaultOptions,
58
+ });
59
+ const defaultProxy = proxyActivities(defaultOptions);
60
+ log.debug("Default activity proxy is ready");
61
+ // merge default vars with the payload vars and add objectIds and obejctId
62
+ const vars = new Vars({
63
+ ...definition.vars,
64
+ ...payload.vars,
65
+ objectIds: payload.objectIds || [],
66
+ objectId: payload.objectIds ? payload.objectIds[0] : undefined
67
+ });
68
+
69
+ log.info("Executing workflow", { payload });
70
+
71
+ if (definition.steps) {
72
+ for (const step of definition.steps) {
73
+ const stepType = step.type;
74
+ if (stepType === 'workflow') {
75
+ const childWorkflowStep = step as DSLChildWorkflowStep;
76
+ if (childWorkflowStep.async) {
77
+ await startChildWorkflow(childWorkflowStep, payload, vars, basePayload.debug_mode);
78
+ } else {
79
+ await executeChildWorkflow(childWorkflowStep, payload, vars, basePayload.debug_mode);
80
+ }
81
+ } else { // activity
82
+ await runActivity(step as DSLActivitySpec, basePayload, vars, defaultProxy, defaultOptions);
83
+ }
84
+ }
85
+ } else if (definition.activities) { // legacy support
86
+ for (const activity of definition.activities) {
87
+ await runActivity(activity, basePayload, vars, defaultProxy, defaultOptions);
88
+ }
89
+ } else {
90
+ throw new Error("No steps or activities found in the workflow definition");
91
+ }
92
+ return vars.getValue(definition.result || 'result');
93
+ }
94
+
95
+ async function startChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkflowExecutionPayload, vars: Vars, debug_mode?: boolean) {
96
+ const resolvedVars = vars.resolve();
97
+ if (step.vars) {
98
+ // copy user vars (from step definition) to the resolved vars
99
+ Object.assign(resolvedVars, step.vars);
100
+ }
101
+ if (debug_mode) {
102
+ log.debug(`Workflow vars before starting child workflow ${step.name}`, { vars: resolvedVars });
103
+ }
104
+ //@ts-ignore
105
+ const handle = await startChild(step.name, {
106
+ ...step.options,
107
+ args: [{
108
+ ...payload,
109
+ workflow: step.spec,
110
+ vars: resolvedVars
111
+ }]
112
+ });
113
+ if (step.output) {
114
+ vars.setValue(step.output, handle.workflowId);
115
+ }
116
+ }
117
+
118
+ async function executeChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkflowExecutionPayload, vars: Vars, debug_mode?: boolean) {
119
+ const resolvedVars = vars.resolve();
120
+ if (step.vars) {
121
+ // copy user vars (from step definition) to the resolved vars
122
+ Object.assign(resolvedVars, step.vars);
123
+ }
124
+ if (debug_mode) {
125
+ log.debug(`Workflow vars before excuting child workflow ${step.name}`, { vars: resolvedVars });
126
+ }
127
+ //@ts-ignore
128
+ const result = await executeChild(step.name, {
129
+ ...step.options,
130
+ args: [{
131
+ ...payload,
132
+ workflow: step.spec,
133
+ vars: resolvedVars,
134
+ }]
135
+ });
136
+
137
+ if (step.output) {
138
+ vars.setValue(step.output, result);
139
+ if (debug_mode) {
140
+ log.debug(`Workflow vars after executing child workflow ${step.name}`, { vars: vars.resolve() });
141
+ }
142
+ } else if (debug_mode) {
143
+ log.debug(`Workflow vars after executing child workflow ${step.name}`, { vars: resolvedVars });
144
+ }
145
+ }
146
+
147
+ async function runActivity(activity: DSLActivitySpec, basePayload: BaseActivityPayload, vars: Vars, defaultProxy: ActivityInterfaceFor<UntypedActivities>, defaultOptions: ActivityOptions) {
148
+ if (basePayload.debug_mode) {
149
+ log.debug(`Workflow vars before executing activity ${activity.name}`, { vars: vars.resolve() });
150
+ }
151
+ if (activity.condition && !vars.match(activity.condition)) {
152
+ log.info("Activity skiped: condition not satisfied", activity.condition);
153
+ return;
154
+ }
155
+ const importParams = vars.createImportVars(activity.import);
156
+ const executionPayload = dslActivityPayload(basePayload, activity, importParams);
157
+ log.info("Executing activity: " + activity.name, { payload: executionPayload });
158
+
159
+ let proxy = defaultProxy;
160
+ if (activity.options) {
161
+ const options = computeActivityOptions(activity.options, defaultOptions);
162
+ log.debug("Use custom activity options", {
163
+ activityName: activity.name,
164
+ activityOptions: options,
165
+ });
166
+ proxy = proxyActivities(options)
167
+ } else {
168
+ log.debug("Use default activity options", {
169
+ activityName: activity.name,
170
+ activityOptions: defaultOptions,
171
+ });
172
+ }
173
+
174
+ const fn = proxy[activity.name];
175
+ if (activity.parallel) {
176
+ //TODO execute in parallel
177
+ log.info("Parallel execution not yet implemented");
178
+ } else {
179
+ log.info("Executing activity: " + activity.name, { importParams });
180
+ const result = await fn(executionPayload);
181
+ if (activity.output) {
182
+ vars.setValue(activity.output, result);
183
+ }
184
+ }
185
+ if (basePayload.debug_mode) {
186
+ log.debug(`Workflow vars after executing activity ${activity.name}`, { vars: vars.resolve() });
187
+ }
188
+ }
189
+
190
+ export function computeActivityOptions(customOptions: DSLActivityOptions, defaultOptions: ActivityOptions): ActivityOptions {
191
+ const options = convertDSLActivityOptions(customOptions);
192
+ return {
193
+ ...defaultOptions,
194
+ ...options,
195
+ retry: {
196
+ ...defaultOptions.retry,
197
+ ...options.retry,
198
+ }
199
+ }
200
+ }
201
+
202
+ function convertDSLActivityOptions(options?: DSLActivityOptions): ActivityOptions {
203
+ if (!options) {
204
+ return {};
205
+ }
206
+ let result: ActivityOptions = {};
207
+ if (options.startToCloseTimeout) {
208
+ result.startToCloseTimeout = ms(options.startToCloseTimeout as StringValue);
209
+ }
210
+ if (options.scheduleToCloseTimeout) {
211
+ result.scheduleToCloseTimeout = ms(options.scheduleToCloseTimeout as StringValue);
212
+ }
213
+ if (options.scheduleToStartTimeout) {
214
+ result.scheduleToStartTimeout = ms(options.scheduleToStartTimeout as StringValue);
215
+ }
216
+ if (options.retry) {
217
+ result.retry = {};
218
+ if (options.retry.initialInterval) {
219
+ result.retry.initialInterval = ms(options.retry.initialInterval as StringValue);
220
+ }
221
+ if (options.retry.maximumInterval) {
222
+ result.retry.maximumInterval = ms(options.retry.maximumInterval as StringValue);
223
+ }
224
+ if (options.retry.maximumAttempts) {
225
+ result.retry.maximumAttempts = options.retry.maximumAttempts;
226
+ }
227
+ if (options.retry.backoffCoefficient) {
228
+ result.retry.backoffCoefficient = options.retry.backoffCoefficient;
229
+ }
230
+ if (options.retry.nonRetryableErrorTypes) {
231
+ result.retry.nonRetryableErrorTypes = options.retry.nonRetryableErrorTypes;
232
+ }
233
+ }
234
+ return result;
235
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Types for the `ms` package (version 3.0.0-canary.1)
3
+ */
4
+ declare module "ms" {
5
+ declare type Unit = 'Years' | 'Year' | 'Yrs' | 'Yr' | 'Y' | 'Weeks' | 'Week' | 'W' | 'Days' | 'Day' | 'D' | 'Hours' | 'Hour' | 'Hrs' | 'Hr' | 'H' | 'Minutes' | 'Minute' | 'Mins' | 'Min' | 'M' | 'Seconds' | 'Second' | 'Secs' | 'Sec' | 's' | 'Milliseconds' | 'Millisecond' | 'Msecs' | 'Msec' | 'Ms';
6
+ declare type UnitAnyCase = Unit | Uppercase<Unit> | Lowercase<Unit>;
7
+ export declare type StringValue = `${number}` | `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`;
8
+ declare function ms(value: StringValue, options?: Options): number;
9
+ declare function ms(value: number, options?: Options): string;
10
+ export default ms;
11
+ }