@vertesia/workflow 0.24.0-dev.202601221707

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 (490) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +65 -0
  3. package/bin/bundle-workflows.mjs +39 -0
  4. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +33 -0
  5. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  6. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +73 -0
  7. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  8. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +19 -0
  9. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  10. package/lib/cjs/activities/chunkDocument.js +85 -0
  11. package/lib/cjs/activities/chunkDocument.js.map +1 -0
  12. package/lib/cjs/activities/copyParentArtifacts.js +127 -0
  13. package/lib/cjs/activities/copyParentArtifacts.js.map +1 -0
  14. package/lib/cjs/activities/createDocumentFromOther.js +64 -0
  15. package/lib/cjs/activities/createDocumentFromOther.js.map +1 -0
  16. package/lib/cjs/activities/executeInteraction.js +194 -0
  17. package/lib/cjs/activities/executeInteraction.js.map +1 -0
  18. package/lib/cjs/activities/extractDocumentText.js +156 -0
  19. package/lib/cjs/activities/extractDocumentText.js.map +1 -0
  20. package/lib/cjs/activities/generateDocumentProperties.js +83 -0
  21. package/lib/cjs/activities/generateDocumentProperties.js.map +1 -0
  22. package/lib/cjs/activities/generateEmbeddings.js +257 -0
  23. package/lib/cjs/activities/generateEmbeddings.js.map +1 -0
  24. package/lib/cjs/activities/generateOrAssignContentType.js +125 -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/handleError.js +22 -0
  29. package/lib/cjs/activities/handleError.js.map +1 -0
  30. package/lib/cjs/activities/index-dsl.js +51 -0
  31. package/lib/cjs/activities/index-dsl.js.map +1 -0
  32. package/lib/cjs/activities/index.js +21 -0
  33. package/lib/cjs/activities/index.js.map +1 -0
  34. package/lib/cjs/activities/media/prepareAudio.js +239 -0
  35. package/lib/cjs/activities/media/prepareAudio.js.map +1 -0
  36. package/lib/cjs/activities/media/prepareVideo.js +429 -0
  37. package/lib/cjs/activities/media/prepareVideo.js.map +1 -0
  38. package/lib/cjs/activities/media/processPdfWithTextract.js +103 -0
  39. package/lib/cjs/activities/media/processPdfWithTextract.js.map +1 -0
  40. package/lib/cjs/activities/media/saveGladiaTranscription.js +81 -0
  41. package/lib/cjs/activities/media/saveGladiaTranscription.js.map +1 -0
  42. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +82 -0
  43. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +1 -0
  44. package/lib/cjs/activities/notifyWebhook.js +158 -0
  45. package/lib/cjs/activities/notifyWebhook.js.map +1 -0
  46. package/lib/cjs/activities/rateLimiter.js +30 -0
  47. package/lib/cjs/activities/rateLimiter.js.map +1 -0
  48. package/lib/cjs/activities/renditions/generateImageRendition.js +66 -0
  49. package/lib/cjs/activities/renditions/generateImageRendition.js.map +1 -0
  50. package/lib/cjs/activities/renditions/generateVideoRendition.js +200 -0
  51. package/lib/cjs/activities/renditions/generateVideoRendition.js.map +1 -0
  52. package/lib/cjs/activities/setDocumentStatus.js +15 -0
  53. package/lib/cjs/activities/setDocumentStatus.js.map +1 -0
  54. package/lib/cjs/conversion/TextractProcessor.js +417 -0
  55. package/lib/cjs/conversion/TextractProcessor.js.map +1 -0
  56. package/lib/cjs/conversion/image.js +149 -0
  57. package/lib/cjs/conversion/image.js.map +1 -0
  58. package/lib/cjs/conversion/markitdown.js +42 -0
  59. package/lib/cjs/conversion/markitdown.js.map +1 -0
  60. package/lib/cjs/conversion/mutool.js +147 -0
  61. package/lib/cjs/conversion/mutool.js.map +1 -0
  62. package/lib/cjs/conversion/pandoc.js +39 -0
  63. package/lib/cjs/conversion/pandoc.js.map +1 -0
  64. package/lib/cjs/dsl/conditions.js +81 -0
  65. package/lib/cjs/dsl/conditions.js.map +1 -0
  66. package/lib/cjs/dsl/dsl-workflow.js +343 -0
  67. package/lib/cjs/dsl/dsl-workflow.js.map +1 -0
  68. package/lib/cjs/dsl/dslProxyActivities.js +23 -0
  69. package/lib/cjs/dsl/dslProxyActivities.js.map +1 -0
  70. package/lib/cjs/dsl/projections.js +59 -0
  71. package/lib/cjs/dsl/projections.js.map +1 -0
  72. package/lib/cjs/dsl/setup/ActivityContext.js +122 -0
  73. package/lib/cjs/dsl/setup/ActivityContext.js.map +1 -0
  74. package/lib/cjs/dsl/setup/fetch/DataProvider.js +51 -0
  75. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +1 -0
  76. package/lib/cjs/dsl/setup/fetch/index.js +16 -0
  77. package/lib/cjs/dsl/setup/fetch/index.js.map +1 -0
  78. package/lib/cjs/dsl/setup/fetch/providers.js +67 -0
  79. package/lib/cjs/dsl/setup/fetch/providers.js.map +1 -0
  80. package/lib/cjs/dsl/test/test-child-workflow.js +10 -0
  81. package/lib/cjs/dsl/test/test-child-workflow.js.map +1 -0
  82. package/lib/cjs/dsl/validation.js +122 -0
  83. package/lib/cjs/dsl/validation.js.map +1 -0
  84. package/lib/cjs/dsl/vars.js +341 -0
  85. package/lib/cjs/dsl/vars.js.map +1 -0
  86. package/lib/cjs/dsl/walk.js +100 -0
  87. package/lib/cjs/dsl/walk.js.map +1 -0
  88. package/lib/cjs/dsl.js +20 -0
  89. package/lib/cjs/dsl.js.map +1 -0
  90. package/lib/cjs/errors.js +79 -0
  91. package/lib/cjs/errors.js.map +1 -0
  92. package/lib/cjs/index.js +56 -0
  93. package/lib/cjs/index.js.map +1 -0
  94. package/lib/cjs/iterative-generation/activities/extractToc.js +47 -0
  95. package/lib/cjs/iterative-generation/activities/extractToc.js.map +1 -0
  96. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +72 -0
  97. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +1 -0
  98. package/lib/cjs/iterative-generation/activities/generatePart.js +78 -0
  99. package/lib/cjs/iterative-generation/activities/generatePart.js.map +1 -0
  100. package/lib/cjs/iterative-generation/activities/generateToc.js +86 -0
  101. package/lib/cjs/iterative-generation/activities/generateToc.js.map +1 -0
  102. package/lib/cjs/iterative-generation/activities/index.js +12 -0
  103. package/lib/cjs/iterative-generation/activities/index.js.map +1 -0
  104. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +56 -0
  105. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  106. package/lib/cjs/iterative-generation/types.js +5 -0
  107. package/lib/cjs/iterative-generation/types.js.map +1 -0
  108. package/lib/cjs/iterative-generation/utils.js +121 -0
  109. package/lib/cjs/iterative-generation/utils.js.map +1 -0
  110. package/lib/cjs/package.json +3 -0
  111. package/lib/cjs/result-types.js +10 -0
  112. package/lib/cjs/result-types.js.map +1 -0
  113. package/lib/cjs/system/notifyWebhookWorkflow.js +53 -0
  114. package/lib/cjs/system/notifyWebhookWorkflow.js.map +1 -0
  115. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +33 -0
  116. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  117. package/lib/cjs/utils/auth.js +15 -0
  118. package/lib/cjs/utils/auth.js.map +1 -0
  119. package/lib/cjs/utils/blobs.js +64 -0
  120. package/lib/cjs/utils/blobs.js.map +1 -0
  121. package/lib/cjs/utils/chunks.js +14 -0
  122. package/lib/cjs/utils/chunks.js.map +1 -0
  123. package/lib/cjs/utils/client.js +31 -0
  124. package/lib/cjs/utils/client.js.map +1 -0
  125. package/lib/cjs/utils/expand-vars.js +33 -0
  126. package/lib/cjs/utils/expand-vars.js.map +1 -0
  127. package/lib/cjs/utils/memory.js +65 -0
  128. package/lib/cjs/utils/memory.js.map +1 -0
  129. package/lib/cjs/utils/renditions.js +88 -0
  130. package/lib/cjs/utils/renditions.js.map +1 -0
  131. package/lib/cjs/utils/storage.js +54 -0
  132. package/lib/cjs/utils/storage.js.map +1 -0
  133. package/lib/cjs/utils/tokens.js +38 -0
  134. package/lib/cjs/utils/tokens.js.map +1 -0
  135. package/lib/cjs/vars.js +20 -0
  136. package/lib/cjs/vars.js.map +1 -0
  137. package/lib/cjs/workflows.js +15 -0
  138. package/lib/cjs/workflows.js.map +1 -0
  139. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +30 -0
  140. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  141. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +70 -0
  142. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  143. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +16 -0
  144. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  145. package/lib/esm/activities/chunkDocument.js +82 -0
  146. package/lib/esm/activities/chunkDocument.js.map +1 -0
  147. package/lib/esm/activities/copyParentArtifacts.js +124 -0
  148. package/lib/esm/activities/copyParentArtifacts.js.map +1 -0
  149. package/lib/esm/activities/createDocumentFromOther.js +58 -0
  150. package/lib/esm/activities/createDocumentFromOther.js.map +1 -0
  151. package/lib/esm/activities/executeInteraction.js +190 -0
  152. package/lib/esm/activities/executeInteraction.js.map +1 -0
  153. package/lib/esm/activities/extractDocumentText.js +153 -0
  154. package/lib/esm/activities/extractDocumentText.js.map +1 -0
  155. package/lib/esm/activities/generateDocumentProperties.js +80 -0
  156. package/lib/esm/activities/generateDocumentProperties.js.map +1 -0
  157. package/lib/esm/activities/generateEmbeddings.js +254 -0
  158. package/lib/esm/activities/generateEmbeddings.js.map +1 -0
  159. package/lib/esm/activities/generateOrAssignContentType.js +122 -0
  160. package/lib/esm/activities/generateOrAssignContentType.js.map +1 -0
  161. package/lib/esm/activities/getObjectFromStore.js +17 -0
  162. package/lib/esm/activities/getObjectFromStore.js.map +1 -0
  163. package/lib/esm/activities/handleError.js +19 -0
  164. package/lib/esm/activities/handleError.js.map +1 -0
  165. package/lib/esm/activities/index-dsl.js +25 -0
  166. package/lib/esm/activities/index-dsl.js.map +1 -0
  167. package/lib/esm/activities/index.js +5 -0
  168. package/lib/esm/activities/index.js.map +1 -0
  169. package/lib/esm/activities/media/prepareAudio.js +200 -0
  170. package/lib/esm/activities/media/prepareAudio.js.map +1 -0
  171. package/lib/esm/activities/media/prepareVideo.js +390 -0
  172. package/lib/esm/activities/media/prepareVideo.js.map +1 -0
  173. package/lib/esm/activities/media/processPdfWithTextract.js +99 -0
  174. package/lib/esm/activities/media/processPdfWithTextract.js.map +1 -0
  175. package/lib/esm/activities/media/saveGladiaTranscription.js +78 -0
  176. package/lib/esm/activities/media/saveGladiaTranscription.js.map +1 -0
  177. package/lib/esm/activities/media/transcribeMediaWithGladia.js +79 -0
  178. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +1 -0
  179. package/lib/esm/activities/notifyWebhook.js +155 -0
  180. package/lib/esm/activities/notifyWebhook.js.map +1 -0
  181. package/lib/esm/activities/rateLimiter.js +27 -0
  182. package/lib/esm/activities/rateLimiter.js.map +1 -0
  183. package/lib/esm/activities/renditions/generateImageRendition.js +63 -0
  184. package/lib/esm/activities/renditions/generateImageRendition.js.map +1 -0
  185. package/lib/esm/activities/renditions/generateVideoRendition.js +194 -0
  186. package/lib/esm/activities/renditions/generateVideoRendition.js.map +1 -0
  187. package/lib/esm/activities/setDocumentStatus.js +12 -0
  188. package/lib/esm/activities/setDocumentStatus.js.map +1 -0
  189. package/lib/esm/conversion/TextractProcessor.js +410 -0
  190. package/lib/esm/conversion/TextractProcessor.js.map +1 -0
  191. package/lib/esm/conversion/image.js +143 -0
  192. package/lib/esm/conversion/image.js.map +1 -0
  193. package/lib/esm/conversion/markitdown.js +36 -0
  194. package/lib/esm/conversion/markitdown.js.map +1 -0
  195. package/lib/esm/conversion/mutool.js +139 -0
  196. package/lib/esm/conversion/mutool.js.map +1 -0
  197. package/lib/esm/conversion/pandoc.js +36 -0
  198. package/lib/esm/conversion/pandoc.js.map +1 -0
  199. package/lib/esm/dsl/conditions.js +75 -0
  200. package/lib/esm/dsl/conditions.js.map +1 -0
  201. package/lib/esm/dsl/dsl-workflow.js +336 -0
  202. package/lib/esm/dsl/dsl-workflow.js.map +1 -0
  203. package/lib/esm/dsl/dslProxyActivities.js +20 -0
  204. package/lib/esm/dsl/dslProxyActivities.js.map +1 -0
  205. package/lib/esm/dsl/projections.js +55 -0
  206. package/lib/esm/dsl/projections.js.map +1 -0
  207. package/lib/esm/dsl/setup/ActivityContext.js +117 -0
  208. package/lib/esm/dsl/setup/ActivityContext.js.map +1 -0
  209. package/lib/esm/dsl/setup/fetch/DataProvider.js +47 -0
  210. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +1 -0
  211. package/lib/esm/dsl/setup/fetch/index.js +12 -0
  212. package/lib/esm/dsl/setup/fetch/index.js.map +1 -0
  213. package/lib/esm/dsl/setup/fetch/providers.js +61 -0
  214. package/lib/esm/dsl/setup/fetch/providers.js.map +1 -0
  215. package/lib/esm/dsl/test/test-child-workflow.js +5 -0
  216. package/lib/esm/dsl/test/test-child-workflow.js.map +1 -0
  217. package/lib/esm/dsl/validation.js +118 -0
  218. package/lib/esm/dsl/validation.js.map +1 -0
  219. package/lib/esm/dsl/vars.js +335 -0
  220. package/lib/esm/dsl/vars.js.map +1 -0
  221. package/lib/esm/dsl/walk.js +96 -0
  222. package/lib/esm/dsl/walk.js.map +1 -0
  223. package/lib/esm/dsl.js +4 -0
  224. package/lib/esm/dsl.js.map +1 -0
  225. package/lib/esm/errors.js +69 -0
  226. package/lib/esm/errors.js.map +1 -0
  227. package/lib/esm/index.js +38 -0
  228. package/lib/esm/index.js.map +1 -0
  229. package/lib/esm/iterative-generation/activities/extractToc.js +44 -0
  230. package/lib/esm/iterative-generation/activities/extractToc.js.map +1 -0
  231. package/lib/esm/iterative-generation/activities/finalizeOutput.js +69 -0
  232. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +1 -0
  233. package/lib/esm/iterative-generation/activities/generatePart.js +75 -0
  234. package/lib/esm/iterative-generation/activities/generatePart.js.map +1 -0
  235. package/lib/esm/iterative-generation/activities/generateToc.js +83 -0
  236. package/lib/esm/iterative-generation/activities/generateToc.js.map +1 -0
  237. package/lib/esm/iterative-generation/activities/index.js +5 -0
  238. package/lib/esm/iterative-generation/activities/index.js.map +1 -0
  239. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +53 -0
  240. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  241. package/lib/esm/iterative-generation/types.js +2 -0
  242. package/lib/esm/iterative-generation/types.js.map +1 -0
  243. package/lib/esm/iterative-generation/utils.js +112 -0
  244. package/lib/esm/iterative-generation/utils.js.map +1 -0
  245. package/lib/esm/result-types.js +7 -0
  246. package/lib/esm/result-types.js.map +1 -0
  247. package/lib/esm/system/notifyWebhookWorkflow.js +50 -0
  248. package/lib/esm/system/notifyWebhookWorkflow.js.map +1 -0
  249. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +30 -0
  250. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  251. package/lib/esm/utils/auth.js +8 -0
  252. package/lib/esm/utils/auth.js.map +1 -0
  253. package/lib/esm/utils/blobs.js +54 -0
  254. package/lib/esm/utils/blobs.js.map +1 -0
  255. package/lib/esm/utils/chunks.js +9 -0
  256. package/lib/esm/utils/chunks.js.map +1 -0
  257. package/lib/esm/utils/client.js +27 -0
  258. package/lib/esm/utils/client.js.map +1 -0
  259. package/lib/esm/utils/expand-vars.js +30 -0
  260. package/lib/esm/utils/expand-vars.js.map +1 -0
  261. package/lib/esm/utils/memory.js +55 -0
  262. package/lib/esm/utils/memory.js.map +1 -0
  263. package/lib/esm/utils/renditions.js +80 -0
  264. package/lib/esm/utils/renditions.js.map +1 -0
  265. package/lib/esm/utils/storage.js +45 -0
  266. package/lib/esm/utils/storage.js.map +1 -0
  267. package/lib/esm/utils/tokens.js +34 -0
  268. package/lib/esm/utils/tokens.js.map +1 -0
  269. package/lib/esm/vars.js +4 -0
  270. package/lib/esm/vars.js.map +1 -0
  271. package/lib/esm/workflows.js +8 -0
  272. package/lib/esm/workflows.js.map +1 -0
  273. package/lib/tsconfig.tsbuildinfo +1 -0
  274. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +17 -0
  275. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +1 -0
  276. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +39 -0
  277. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +1 -0
  278. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +19 -0
  279. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +1 -0
  280. package/lib/types/activities/chunkDocument.d.ts +33 -0
  281. package/lib/types/activities/chunkDocument.d.ts.map +1 -0
  282. package/lib/types/activities/copyParentArtifacts.d.ts +19 -0
  283. package/lib/types/activities/copyParentArtifacts.d.ts.map +1 -0
  284. package/lib/types/activities/createDocumentFromOther.d.ts +21 -0
  285. package/lib/types/activities/createDocumentFromOther.d.ts.map +1 -0
  286. package/lib/types/activities/executeInteraction.d.ts +61 -0
  287. package/lib/types/activities/executeInteraction.d.ts.map +1 -0
  288. package/lib/types/activities/extractDocumentText.d.ts +10 -0
  289. package/lib/types/activities/extractDocumentText.d.ts.map +1 -0
  290. package/lib/types/activities/generateDocumentProperties.d.ts +32 -0
  291. package/lib/types/activities/generateDocumentProperties.d.ts.map +1 -0
  292. package/lib/types/activities/generateEmbeddings.d.ts +53 -0
  293. package/lib/types/activities/generateEmbeddings.d.ts.map +1 -0
  294. package/lib/types/activities/generateOrAssignContentType.d.ts +44 -0
  295. package/lib/types/activities/generateOrAssignContentType.d.ts.map +1 -0
  296. package/lib/types/activities/getObjectFromStore.d.ts +14 -0
  297. package/lib/types/activities/getObjectFromStore.d.ts.map +1 -0
  298. package/lib/types/activities/handleError.d.ts +6 -0
  299. package/lib/types/activities/handleError.d.ts.map +1 -0
  300. package/lib/types/activities/index-dsl.d.ts +25 -0
  301. package/lib/types/activities/index-dsl.d.ts.map +1 -0
  302. package/lib/types/activities/index.d.ts +5 -0
  303. package/lib/types/activities/index.d.ts.map +1 -0
  304. package/lib/types/activities/media/prepareAudio.d.ts +25 -0
  305. package/lib/types/activities/media/prepareAudio.d.ts.map +1 -0
  306. package/lib/types/activities/media/prepareVideo.d.ts +30 -0
  307. package/lib/types/activities/media/prepareVideo.d.ts.map +1 -0
  308. package/lib/types/activities/media/processPdfWithTextract.d.ts +26 -0
  309. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +1 -0
  310. package/lib/types/activities/media/saveGladiaTranscription.d.ts +14 -0
  311. package/lib/types/activities/media/saveGladiaTranscription.d.ts.map +1 -0
  312. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +19 -0
  313. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +1 -0
  314. package/lib/types/activities/notifyWebhook.d.ts +27 -0
  315. package/lib/types/activities/notifyWebhook.d.ts.map +1 -0
  316. package/lib/types/activities/rateLimiter.d.ts +11 -0
  317. package/lib/types/activities/rateLimiter.d.ts.map +1 -0
  318. package/lib/types/activities/renditions/generateImageRendition.d.ts +14 -0
  319. package/lib/types/activities/renditions/generateImageRendition.d.ts.map +1 -0
  320. package/lib/types/activities/renditions/generateVideoRendition.d.ts +15 -0
  321. package/lib/types/activities/renditions/generateVideoRendition.d.ts.map +1 -0
  322. package/lib/types/activities/setDocumentStatus.d.ts +15 -0
  323. package/lib/types/activities/setDocumentStatus.d.ts.map +1 -0
  324. package/lib/types/conversion/TextractProcessor.d.ts +45 -0
  325. package/lib/types/conversion/TextractProcessor.d.ts.map +1 -0
  326. package/lib/types/conversion/image.d.ts +13 -0
  327. package/lib/types/conversion/image.d.ts.map +1 -0
  328. package/lib/types/conversion/markitdown.d.ts +2 -0
  329. package/lib/types/conversion/markitdown.d.ts.map +1 -0
  330. package/lib/types/conversion/mutool.d.ts +19 -0
  331. package/lib/types/conversion/mutool.d.ts.map +1 -0
  332. package/lib/types/conversion/pandoc.d.ts +2 -0
  333. package/lib/types/conversion/pandoc.d.ts.map +1 -0
  334. package/lib/types/dsl/conditions.d.ts +2 -0
  335. package/lib/types/dsl/conditions.d.ts.map +1 -0
  336. package/lib/types/dsl/dsl-workflow.d.ts +5 -0
  337. package/lib/types/dsl/dsl-workflow.d.ts.map +1 -0
  338. package/lib/types/dsl/dslProxyActivities.d.ts +10 -0
  339. package/lib/types/dsl/dslProxyActivities.d.ts.map +1 -0
  340. package/lib/types/dsl/projections.d.ts +4 -0
  341. package/lib/types/dsl/projections.d.ts.map +1 -0
  342. package/lib/types/dsl/setup/ActivityContext.d.ts +17 -0
  343. package/lib/types/dsl/setup/ActivityContext.d.ts.map +1 -0
  344. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +9 -0
  345. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +1 -0
  346. package/lib/types/dsl/setup/fetch/index.d.ts +6 -0
  347. package/lib/types/dsl/setup/fetch/index.d.ts.map +1 -0
  348. package/lib/types/dsl/setup/fetch/providers.d.ts +25 -0
  349. package/lib/types/dsl/setup/fetch/providers.d.ts.map +1 -0
  350. package/lib/types/dsl/test/test-child-workflow.d.ts +4 -0
  351. package/lib/types/dsl/test/test-child-workflow.d.ts.map +1 -0
  352. package/lib/types/dsl/validation.d.ts +4 -0
  353. package/lib/types/dsl/validation.d.ts.map +1 -0
  354. package/lib/types/dsl/vars.d.ts +48 -0
  355. package/lib/types/dsl/vars.d.ts.map +1 -0
  356. package/lib/types/dsl/walk.d.ts +18 -0
  357. package/lib/types/dsl/walk.d.ts.map +1 -0
  358. package/lib/types/dsl.d.ts +4 -0
  359. package/lib/types/dsl.d.ts.map +1 -0
  360. package/lib/types/errors.d.ts +37 -0
  361. package/lib/types/errors.d.ts.map +1 -0
  362. package/lib/types/index.d.ts +37 -0
  363. package/lib/types/index.d.ts.map +1 -0
  364. package/lib/types/iterative-generation/activities/extractToc.d.ts +10 -0
  365. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +1 -0
  366. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +3 -0
  367. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +1 -0
  368. package/lib/types/iterative-generation/activities/generatePart.d.ts +3 -0
  369. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +1 -0
  370. package/lib/types/iterative-generation/activities/generateToc.d.ts +4 -0
  371. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +1 -0
  372. package/lib/types/iterative-generation/activities/index.d.ts +5 -0
  373. package/lib/types/iterative-generation/activities/index.d.ts.map +1 -0
  374. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +3 -0
  375. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +1 -0
  376. package/lib/types/iterative-generation/types.d.ts +79 -0
  377. package/lib/types/iterative-generation/types.d.ts.map +1 -0
  378. package/lib/types/iterative-generation/utils.d.ts +26 -0
  379. package/lib/types/iterative-generation/utils.d.ts.map +1 -0
  380. package/lib/types/result-types.d.ts +22 -0
  381. package/lib/types/result-types.d.ts.map +1 -0
  382. package/lib/types/system/notifyWebhookWorkflow.d.ts +8 -0
  383. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +1 -0
  384. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +25 -0
  385. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +1 -0
  386. package/lib/types/utils/auth.d.ts +4 -0
  387. package/lib/types/utils/auth.d.ts.map +1 -0
  388. package/lib/types/utils/blobs.d.ts +7 -0
  389. package/lib/types/utils/blobs.d.ts.map +1 -0
  390. package/lib/types/utils/chunks.d.ts +9 -0
  391. package/lib/types/utils/chunks.d.ts.map +1 -0
  392. package/lib/types/utils/client.d.ts +8 -0
  393. package/lib/types/utils/client.d.ts.map +1 -0
  394. package/lib/types/utils/expand-vars.d.ts +8 -0
  395. package/lib/types/utils/expand-vars.d.ts.map +1 -0
  396. package/lib/types/utils/memory.d.ts +8 -0
  397. package/lib/types/utils/memory.d.ts.map +1 -0
  398. package/lib/types/utils/renditions.d.ts +23 -0
  399. package/lib/types/utils/renditions.d.ts.map +1 -0
  400. package/lib/types/utils/storage.d.ts +16 -0
  401. package/lib/types/utils/storage.d.ts.map +1 -0
  402. package/lib/types/utils/tokens.d.ts +11 -0
  403. package/lib/types/utils/tokens.d.ts.map +1 -0
  404. package/lib/types/vars.d.ts +3 -0
  405. package/lib/types/vars.d.ts.map +1 -0
  406. package/lib/types/workflows.d.ts +8 -0
  407. package/lib/types/workflows.d.ts.map +1 -0
  408. package/lib/workflows-bundle.js +17213 -0
  409. package/package.json +146 -0
  410. package/src/activities/advanced/createDocumentTypeFromInteractionRun.ts +55 -0
  411. package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +119 -0
  412. package/src/activities/advanced/updateDocumentFromInteractionRun.ts +35 -0
  413. package/src/activities/chunkDocument.ts +146 -0
  414. package/src/activities/copyParentArtifacts.ts +162 -0
  415. package/src/activities/createDocumentFromOther.ts +92 -0
  416. package/src/activities/executeInteraction.ts +300 -0
  417. package/src/activities/extractDocumentText.ts +205 -0
  418. package/src/activities/generateDocumentProperties.ts +120 -0
  419. package/src/activities/generateEmbeddings.ts +387 -0
  420. package/src/activities/generateOrAssignContentType.ts +218 -0
  421. package/src/activities/getObjectFromStore.ts +31 -0
  422. package/src/activities/handleError.ts +25 -0
  423. package/src/activities/index-dsl.ts +25 -0
  424. package/src/activities/index.ts +4 -0
  425. package/src/activities/media/prepareAudio.ts +334 -0
  426. package/src/activities/media/prepareVideo.ts +622 -0
  427. package/src/activities/media/processPdfWithTextract.ts +141 -0
  428. package/src/activities/media/saveGladiaTranscription.ts +128 -0
  429. package/src/activities/media/transcribeMediaWithGladia.ts +117 -0
  430. package/src/activities/notifyWebhook.test.ts +134 -0
  431. package/src/activities/notifyWebhook.ts +199 -0
  432. package/src/activities/rateLimiter.ts +41 -0
  433. package/src/activities/renditions/generateImageRendition.ts +111 -0
  434. package/src/activities/renditions/generateVideoRendition.ts +293 -0
  435. package/src/activities/setDocumentStatus.ts +25 -0
  436. package/src/conversion/TextractProcessor.ts +506 -0
  437. package/src/conversion/image.test.ts +118 -0
  438. package/src/conversion/image.ts +168 -0
  439. package/src/conversion/markitdown.ts +41 -0
  440. package/src/conversion/mutool.test.ts +74 -0
  441. package/src/conversion/mutool.ts +180 -0
  442. package/src/conversion/pandoc.test.ts +24 -0
  443. package/src/conversion/pandoc.ts +40 -0
  444. package/src/dsl/conditions.ts +76 -0
  445. package/src/dsl/dsl-workflow.test.ts +58 -0
  446. package/src/dsl/dsl-workflow.ts +397 -0
  447. package/src/dsl/dslProxyActivities.ts +38 -0
  448. package/src/dsl/ms.d.ts +11 -0
  449. package/src/dsl/projections.test.ts +159 -0
  450. package/src/dsl/projections.ts +72 -0
  451. package/src/dsl/setup/ActivityContext.ts +178 -0
  452. package/src/dsl/setup/fetch/DataProvider.ts +45 -0
  453. package/src/dsl/setup/fetch/index.ts +19 -0
  454. package/src/dsl/setup/fetch/providers.ts +67 -0
  455. package/src/dsl/test/test-child-workflow.ts +6 -0
  456. package/src/dsl/validation.test.ts +257 -0
  457. package/src/dsl/validation.ts +125 -0
  458. package/src/dsl/vars.test.ts +245 -0
  459. package/src/dsl/vars.ts +340 -0
  460. package/src/dsl/walk.test.ts +81 -0
  461. package/src/dsl/walk.ts +103 -0
  462. package/src/dsl/workflow-exec-child.test.ts +273 -0
  463. package/src/dsl/workflow-fetch.test.ts +138 -0
  464. package/src/dsl/workflow-import.test.ts +89 -0
  465. package/src/dsl/workflow.test.ts +122 -0
  466. package/src/dsl.ts +3 -0
  467. package/src/errors.ts +101 -0
  468. package/src/index.ts +41 -0
  469. package/src/iterative-generation/activities/extractToc.ts +63 -0
  470. package/src/iterative-generation/activities/finalizeOutput.ts +100 -0
  471. package/src/iterative-generation/activities/generatePart.ts +123 -0
  472. package/src/iterative-generation/activities/generateToc.ts +116 -0
  473. package/src/iterative-generation/activities/index.ts +4 -0
  474. package/src/iterative-generation/iterativeGenerationWorkflow.ts +68 -0
  475. package/src/iterative-generation/types.ts +99 -0
  476. package/src/iterative-generation/utils.ts +126 -0
  477. package/src/result-types.ts +25 -0
  478. package/src/system/notifyWebhookWorkflow.ts +70 -0
  479. package/src/system/recalculateEmbeddingsWorkflow.ts +41 -0
  480. package/src/utils/auth.ts +10 -0
  481. package/src/utils/blobs.ts +59 -0
  482. package/src/utils/chunks.ts +17 -0
  483. package/src/utils/client.ts +46 -0
  484. package/src/utils/expand-vars.ts +31 -0
  485. package/src/utils/memory.ts +61 -0
  486. package/src/utils/renditions.ts +127 -0
  487. package/src/utils/storage.ts +60 -0
  488. package/src/utils/tokens.ts +44 -0
  489. package/src/vars.ts +3 -0
  490. package/src/workflows.ts +7 -0
@@ -0,0 +1,397 @@
1
+ import {
2
+ ActivityInterfaceFor,
3
+ ActivityOptions,
4
+ CancellationScope,
5
+ executeChild,
6
+ isCancellation,
7
+ log,
8
+ patched,
9
+ proxyActivities,
10
+ sleep,
11
+ startChild,
12
+ UntypedActivities,
13
+ } from "@temporalio/workflow";
14
+ import {
15
+ DSLActivityExecutionPayload,
16
+ DSLActivityOptions,
17
+ DSLActivitySpec,
18
+ DSLChildWorkflowStep,
19
+ DSLWorkflowExecutionPayload,
20
+ DSLWorkflowSpec,
21
+ getDocumentIds,
22
+ getTenantId,
23
+ WorkflowExecutionPayload
24
+ } from "@vertesia/common";
25
+ import ms, { StringValue } from 'ms';
26
+ import { HandleDslErrorParams } from "../activities/handleError.js";
27
+ import * as activities from "../activities/index.js";
28
+ import { WF_NON_RETRYABLE_ERRORS, WorkflowParamNotFoundError } from "../errors.js";
29
+ import { Vars } from "./vars.js";
30
+ import { RateLimitParams } from "../activities/rateLimiter.js";
31
+
32
+
33
+ interface BaseActivityPayload extends WorkflowExecutionPayload {
34
+ workflow_name: string;
35
+ debug_mode?: boolean;
36
+ }
37
+
38
+ function dslActivityPayload<ParamsT extends Record<string, any>>(basePayload: BaseActivityPayload, activity: DSLActivitySpec, params: ParamsT) {
39
+ return {
40
+ ...basePayload,
41
+ activity,
42
+ params: params || {},
43
+ } as DSLActivityExecutionPayload<ParamsT>
44
+ }
45
+
46
+ export async function dslWorkflow(payload: DSLWorkflowExecutionPayload) {
47
+
48
+ const definition = payload.workflow;
49
+ if (!definition) {
50
+ throw new WorkflowParamNotFoundError("workflow");
51
+ }
52
+ // the base payload will be used to create the activities payload
53
+ const basePayload: BaseActivityPayload = {
54
+ ...payload,
55
+ workflow_name: definition.name,
56
+ debug_mode: !!definition.debug_mode,
57
+ }
58
+ delete (basePayload as any).workflow;
59
+
60
+ const defaultOptions: ActivityOptions = {
61
+ ...convertDSLActivityOptions(definition.options),
62
+ startToCloseTimeout: "5 minute",
63
+ retry: {
64
+ initialInterval: '10s',
65
+ backoffCoefficient: 2,
66
+ maximumAttempts: 10,
67
+ maximumInterval: 100 * 30 * 1000, //ms
68
+ nonRetryableErrorTypes: WF_NON_RETRYABLE_ERRORS,
69
+ },
70
+ };
71
+ log.debug("Global activity options", {
72
+ activityOptions: defaultOptions,
73
+ });
74
+ const defaultProxy = proxyActivities(defaultOptions);
75
+ log.debug("Default activity proxy is ready");
76
+ // merge default vars with the payload vars and add objectIds and objectId
77
+ const vars = new Vars({
78
+ ...definition.vars,
79
+ ...payload.vars,
80
+ objectIds: payload.objectIds || [],
81
+ objectId: payload.objectIds ? payload.objectIds[0] : undefined
82
+ });
83
+
84
+ log.info("Executing workflow", { payload });
85
+
86
+ // TODO(mhuang): remove patch when all workflows are migrated to v2
87
+ // It avoids breaking the ongoing workflow execution running in v1 and also allows us to
88
+ // deploy the new error handler in production.
89
+ // See https://docs.temporal.io/develop/typescript/versioning
90
+ if (patched('dsl-workflow-error-handling')) {
91
+ // v2: new version with error handler
92
+ try {
93
+ await executeSteps(definition, payload, basePayload, vars, defaultProxy, defaultOptions);
94
+ } catch (e) {
95
+ await handleError(e, basePayload, defaultOptions);
96
+ }
97
+ } else {
98
+ // v1: old version without error handler, deprecated since v0.52.0
99
+ await executeSteps(definition, payload, basePayload, vars, defaultProxy, defaultOptions);
100
+ }
101
+
102
+ return vars.getValue(definition.result || 'result');
103
+ }
104
+
105
+ async function executeSteps(definition: DSLWorkflowSpec, payload: DSLWorkflowExecutionPayload, basePayload: BaseActivityPayload, vars: Vars, defaultProxy: ActivityInterfaceFor<UntypedActivities>, defaultOptions: ActivityOptions) {
106
+ if (definition.steps) {
107
+ for (const step of definition.steps) {
108
+ const stepType = step.type;
109
+ if (stepType === 'workflow') {
110
+ const childWorkflowStep = step as DSLChildWorkflowStep;
111
+ if (childWorkflowStep.async) {
112
+ await startChildWorkflow(childWorkflowStep, payload, vars, basePayload.debug_mode);
113
+ } else {
114
+ await executeChildWorkflow(childWorkflowStep, payload, vars, basePayload.debug_mode);
115
+ }
116
+ } else { // activity
117
+ await runActivity(step as DSLActivitySpec, basePayload, vars, defaultProxy, defaultOptions);
118
+ }
119
+ }
120
+ } else if (definition.activities) { // legacy support
121
+ for (const activity of definition.activities) {
122
+ await runActivity(activity, basePayload, vars, defaultProxy, defaultOptions);
123
+ }
124
+ } else {
125
+ throw new Error("No steps or activities found in the workflow definition");
126
+ }
127
+ }
128
+
129
+ async function handleError(originalError: any, basePayload: BaseActivityPayload, defaultOptions: ActivityOptions) {
130
+ const { handleDslError } = proxyActivities<typeof activities>(defaultOptions);
131
+
132
+ const payload = dslActivityPayload(
133
+ basePayload,
134
+ {
135
+ name: "handleDslError",
136
+ params: { errorMessage: originalError.message },
137
+ } as DSLActivitySpec,
138
+ { errorMessage: originalError.message } satisfies HandleDslErrorParams,
139
+ )
140
+
141
+ if (isCancellation(originalError)) {
142
+ log.warn(`Workflow execution cancelled, executing error handler to update document status`, { error: originalError });
143
+ // Cleanup logic must be in a nonCancellable scope
144
+ // If we'd run cleanup outside of a nonCancellable scope it would've been cancelled
145
+ // before being started because the Workflow's root scope is cancelled.
146
+ // see https://docs.temporal.io/develop/typescript/cancellation
147
+ await CancellationScope.nonCancellable(() => handleDslError(payload));
148
+ } else {
149
+ log.warn(`Workflow execution failed, executing error handler to update document status`, { error: originalError });
150
+ await handleDslError(payload);
151
+ }
152
+ throw originalError;
153
+ }
154
+
155
+ async function startChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkflowExecutionPayload, vars: Vars, debug_mode?: boolean) {
156
+ const resolvedVars = vars.resolve();
157
+ if (step.vars) {
158
+ // copy user vars (from step definition) to the resolved vars, resolving any expressions
159
+ const resolvedStepVars = vars.resolveParams(step.vars);
160
+ Object.assign(resolvedVars, resolvedStepVars);
161
+ }
162
+ if (debug_mode) {
163
+ log.debug(`Workflow vars before starting child workflow ${step.name}`, { vars: resolvedVars });
164
+ }
165
+
166
+ const handle = await startChild(step.name, {
167
+ ...step.options,
168
+ args: [{
169
+ ...payload,
170
+ workflow: step.spec,
171
+ vars: resolvedVars,
172
+ }],
173
+ memo: {
174
+ InitiatedBy: payload.initiated_by,
175
+ },
176
+ searchAttributes: {
177
+ AccountId: [payload.account_id],
178
+ DocumentId: getDocumentIds(payload),
179
+ ProjectId: [payload.project_id],
180
+ TenantId: [getTenantId(payload.account_id, payload.project_id)],
181
+ InitiatedBy: payload.initiated_by ? [payload.initiated_by] : [],
182
+ },
183
+ });
184
+ if (step.output) {
185
+ vars.setValue(step.output, handle.workflowId);
186
+ }
187
+ }
188
+
189
+ async function executeChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkflowExecutionPayload, vars: Vars, debug_mode?: boolean) {
190
+ const resolvedVars = vars.resolve();
191
+ if (step.vars) {
192
+ // copy user vars (from step definition) to the resolved vars, resolving any expressions
193
+ const resolvedStepVars = vars.resolveParams(step.vars);
194
+ Object.assign(resolvedVars, resolvedStepVars);
195
+ }
196
+ if (debug_mode) {
197
+ log.debug(`Workflow vars before executing child workflow ${step.name}`, { vars: resolvedVars });
198
+ }
199
+
200
+ const result = await executeChild(step.name, {
201
+ ...step.options,
202
+ args: [{
203
+ ...payload,
204
+ workflow: step.spec,
205
+ vars: resolvedVars,
206
+ }],
207
+ memo: {
208
+ InitiatedBy: payload.initiated_by,
209
+ },
210
+ searchAttributes: {
211
+ AccountId: [payload.account_id],
212
+ DocumentId: getDocumentIds(payload),
213
+ ProjectId: [payload.project_id],
214
+ TenantId: [getTenantId(payload.account_id, payload.project_id)],
215
+ InitiatedBy: payload.initiated_by ? [payload.initiated_by] : [],
216
+ },
217
+ });
218
+
219
+ if (step.output) {
220
+ vars.setValue(step.output, result);
221
+ if (debug_mode) {
222
+ log.debug(`Workflow vars after executing child workflow ${step.name}`, { vars: vars.resolve() });
223
+ }
224
+ } else if (debug_mode) {
225
+ log.debug(`Workflow vars after executing child workflow ${step.name}`, { vars: resolvedVars });
226
+ }
227
+ }
228
+
229
+ function buildRateLimitParams(activity: DSLActivitySpec, executionPayload: DSLActivityExecutionPayload<any>): RateLimitParams {
230
+ // resolve payload params
231
+ const vars = new Vars({
232
+ ...executionPayload.params, // imported params (doesn't contain expressions)
233
+ ...executionPayload.activity.params, // activity params (may contain expressions)
234
+ });
235
+ const params = vars.resolve();
236
+
237
+ let interactionId: string;
238
+
239
+ switch (activity.name) {
240
+ case "executeInteraction":
241
+ interactionId = params.interactionName;
242
+ break;
243
+
244
+ case "generateDocumentProperties":
245
+ interactionId = params.interactionName || "sys:ExtractInformation";
246
+ break;
247
+
248
+ case "identifyTextSections":
249
+ interactionId = params.interactionName || "sys:IdentifyTextSections";
250
+ break;
251
+
252
+ case "generateOrAssignContentType":
253
+ interactionId = params.interactionNames?.selectDocumentType || "sys:SelectDocumentType";
254
+ break;
255
+
256
+ case "chunkDocument":
257
+ interactionId = params.interactionName || "sys:ChunkDocument";
258
+ break;
259
+
260
+ default:
261
+ // For any other rate-limited activities, try to extract what we can
262
+ interactionId = params.interactionName;
263
+ break;
264
+ }
265
+
266
+ if (!interactionId) {
267
+ throw new Error(`No interaction ID could be determined for activity ${activity.name}`);
268
+ }
269
+
270
+ return {
271
+ interactionIdOrEndpoint: interactionId,
272
+ environmentId: params.environment,
273
+ modelId: params.model,
274
+ };
275
+ }
276
+
277
+ async function runActivity(activity: DSLActivitySpec, basePayload: BaseActivityPayload, vars: Vars, defaultProxy: ActivityInterfaceFor<UntypedActivities>, defaultOptions: ActivityOptions) {
278
+ if (basePayload.debug_mode) {
279
+ log.debug(`Workflow vars before executing activity ${activity.name}`, { vars: vars.resolve() });
280
+ }
281
+ if (activity.condition && !vars.match(activity.condition)) {
282
+ log.info("Activity skipped: condition not satisfied", activity.condition);
283
+ return;
284
+ }
285
+ const importParams = vars.createImportVars(activity.import);
286
+ const executionPayload = dslActivityPayload(basePayload, activity, importParams);
287
+ log.info("Executing activity: " + activity.name, { payload: executionPayload });
288
+
289
+ let proxy = defaultProxy;
290
+ if (activity.options) {
291
+ const options = computeActivityOptions(activity.options, defaultOptions);
292
+ log.debug("Use custom activity options", {
293
+ activityName: activity.name,
294
+ activityOptions: options,
295
+ });
296
+ proxy = proxyActivities(options)
297
+ } else {
298
+ log.debug("Use default activity options", {
299
+ activityName: activity.name,
300
+ activityOptions: defaultOptions,
301
+ });
302
+ }
303
+
304
+ if (patched('system-activity-taskqueue')) {
305
+ // hack: do nothing, remove later
306
+ // https://github.com/vertesia/composableai/pull/544/files
307
+ }
308
+
309
+ // call rate limiter depending on the activity type
310
+ const rateLimitedActivities = [
311
+ "chunkDocument",
312
+ "executeInteraction",
313
+ "generateDocumentProperties",
314
+ "generateOrAssignContentType",
315
+ "identifyTextSections",
316
+ ];
317
+
318
+ if (activity.name && rateLimitedActivities.includes(activity.name)) {
319
+ log.info(`Applying rate limit for activity ${activity.name}`);
320
+ // Apply rate limiting logic here
321
+ // Check rate limit first - loop until no delay
322
+ const rateLimitParams = buildRateLimitParams(activity, executionPayload);
323
+
324
+ const rateLimitPayload = dslActivityPayload(basePayload, activity, rateLimitParams);
325
+ let rateLimitResult = await proxy.checkRateLimit(rateLimitPayload);
326
+
327
+ while (rateLimitResult.delayMs > 0) {
328
+ log.info(`Rate limit delay applied: ${rateLimitResult.delayMs}ms`);
329
+ await sleep(rateLimitResult.delayMs);
330
+
331
+ // Check again after sleeping
332
+ rateLimitResult = await proxy.checkRateLimit(rateLimitPayload);
333
+ }
334
+ }
335
+
336
+ const fn = proxy[activity.name];
337
+ if (activity.parallel) {
338
+ //TODO execute in parallel
339
+ log.info("Parallel execution not yet implemented");
340
+ } else {
341
+ log.info("Executing activity: " + activity.name, { importParams });
342
+ const result = await fn(executionPayload);
343
+ if (activity.output) {
344
+ vars.setValue(activity.output, result);
345
+ }
346
+ }
347
+ if (basePayload.debug_mode) {
348
+ log.debug(`Workflow vars after executing activity ${activity.name}`, { vars: vars.resolve() });
349
+ }
350
+ }
351
+
352
+ export function computeActivityOptions(customOptions: DSLActivityOptions, defaultOptions: ActivityOptions): ActivityOptions {
353
+ const options = convertDSLActivityOptions(customOptions);
354
+ return {
355
+ ...defaultOptions,
356
+ ...options,
357
+ retry: {
358
+ ...defaultOptions.retry,
359
+ ...options.retry,
360
+ }
361
+ }
362
+ }
363
+
364
+ function convertDSLActivityOptions(options?: DSLActivityOptions): ActivityOptions {
365
+ if (!options) {
366
+ return {};
367
+ }
368
+ let result: ActivityOptions = {};
369
+ if (options.startToCloseTimeout) {
370
+ result.startToCloseTimeout = ms(options.startToCloseTimeout as StringValue);
371
+ }
372
+ if (options.scheduleToCloseTimeout) {
373
+ result.scheduleToCloseTimeout = ms(options.scheduleToCloseTimeout as StringValue);
374
+ }
375
+ if (options.scheduleToStartTimeout) {
376
+ result.scheduleToStartTimeout = ms(options.scheduleToStartTimeout as StringValue);
377
+ }
378
+ if (options.retry) {
379
+ result.retry = {};
380
+ if (options.retry.initialInterval) {
381
+ result.retry.initialInterval = ms(options.retry.initialInterval as StringValue);
382
+ }
383
+ if (options.retry.maximumInterval) {
384
+ result.retry.maximumInterval = ms(options.retry.maximumInterval as StringValue);
385
+ }
386
+ if (options.retry.maximumAttempts) {
387
+ result.retry.maximumAttempts = options.retry.maximumAttempts;
388
+ }
389
+ if (options.retry.backoffCoefficient) {
390
+ result.retry.backoffCoefficient = options.retry.backoffCoefficient;
391
+ }
392
+ if (options.retry.nonRetryableErrorTypes) {
393
+ result.retry.nonRetryableErrorTypes = options.retry.nonRetryableErrorTypes;
394
+ }
395
+ }
396
+ return result;
397
+ }
@@ -0,0 +1,38 @@
1
+ import { ActivityOptions, proxyActivities } from "@temporalio/workflow";
2
+ import { DSLActivityExecutionPayload, WorkflowExecutionBaseParams, WorkflowExecutionPayload } from "@vertesia/common";
3
+
4
+ export interface DslActivityFunction<ParamsT extends Record<string, any> = any, ReturnT = any> {
5
+ (payload: DSLActivityExecutionPayload<ParamsT>): Promise<ReturnT>;
6
+ }
7
+
8
+ export interface DslSimplifiedActivityFunction<ParamsT = any, ReturnT = any> {
9
+ (payload: WorkflowExecutionBaseParams, params: ParamsT): Promise<ReturnT>;
10
+ }
11
+
12
+ export function dslProxyActivities<
13
+ ActivitiesT extends Record<string, DslActivityFunction<any, any>>
14
+ >(workflowName: string, options: ActivityOptions = {}) {
15
+ type DslActivities = {
16
+ [K in keyof ActivitiesT]: ActivitiesT[K] extends DslActivityFunction<infer ParamsT, infer ReturnT>
17
+ ? DslSimplifiedActivityFunction<ParamsT, ReturnT>
18
+ : never;
19
+ };
20
+
21
+ const activities = proxyActivities<ActivitiesT>(options) as ActivitiesT;
22
+
23
+ return new Proxy({}, {
24
+ get(_target, prop) {
25
+ const activityFn = activities[prop as keyof ActivitiesT] as DslActivityFunction;
26
+ return (payload: WorkflowExecutionPayload, params: any) => {
27
+ return activityFn({
28
+ ...payload,
29
+ activity: {
30
+ name: prop as string,
31
+ },
32
+ workflow_name: workflowName,
33
+ params,
34
+ });
35
+ };
36
+ },
37
+ }) as unknown as DslActivities;
38
+ }
@@ -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
+ }
@@ -0,0 +1,159 @@
1
+ import { describe, test, expect } from "vitest";
2
+ import { Vars } from "./vars.ts";
3
+ import { makeProjection } from "./projections.ts";
4
+
5
+ describe('Result Projections', () => {
6
+
7
+ test('simple projection', () => {
8
+ const params: Record<string, any> = {
9
+ docTypes: [{ id: 1, name: "type1" }, { id: 2, name: "type2" }],
10
+ objectId: "123"
11
+ }
12
+ const result = {
13
+ result: {
14
+ document_type: "C",
15
+ }
16
+ }
17
+ const spec = {
18
+ docType: "${docTypes[0].name}",
19
+ objectId: "${objectId}",
20
+ resultType: "${#.result.document_type}",
21
+ timestamp: 123456
22
+ }
23
+ const out = makeProjection(spec, params, result);
24
+
25
+ expect(Object.keys(out).length).toBe(4);
26
+ expect(out.docType).toBe("type1");
27
+ expect(out.objectId).toBe("123");
28
+ expect(out.resultType).toBe("C");
29
+ expect(out.timestamp).toBe(123456);
30
+ expect(out.foo).toBeUndefined();
31
+ })
32
+
33
+ test('$element match', () => {
34
+ const params: Record<string, any> = {
35
+ docTypes: [{ id: 1, name: "type1" }, { id: 2, name: "type2" }],
36
+ objectId: "123"
37
+ }
38
+ const result = {
39
+ result: {
40
+ document_type: "type2",
41
+ }
42
+ }
43
+ const spec = {
44
+ docType: {
45
+ $element: {
46
+ from: "${docTypes}",
47
+ where: { name: { $eq: "${#.result.document_type}" } },
48
+ else: { id: 0, name: "unknown" }
49
+ }
50
+ },
51
+ isNewType: {
52
+ $eval: {
53
+ "#.result.document_type": { $nin: "${docTypes.name}" }
54
+ }
55
+ }
56
+ }
57
+
58
+ const out = makeProjection(spec, params, result);
59
+
60
+
61
+ expect(Object.keys(out).length).toBe(2);
62
+ expect(out.docType).toStrictEqual({ id: 2, name: "type2" });
63
+ expect(out.isNewType).toBe(false);
64
+ })
65
+
66
+ test('$element does not match', () => {
67
+ const params: Record<string, any> = {
68
+ docTypes: [{ id: 1, name: "type1" }, { id: 2, name: "type2" }],
69
+ objectId: "123"
70
+ }
71
+ const result = {
72
+ result: {
73
+ document_type: "a_new_type",
74
+ }
75
+ }
76
+ const projection = {
77
+ docType: {
78
+ $element: {
79
+ from: "${docTypes}",
80
+ where: { name: { $eq: "${#.result.document_type}" } },
81
+ else: { id: 0, name: "${#.result.document_type}" }
82
+ }
83
+ },
84
+ isNewType: {
85
+ $eval: {
86
+ "#.result.document_type": { $nin: "${docTypes.name}" }
87
+ }
88
+ }
89
+ }
90
+
91
+ const out = makeProjection(projection, params, result);
92
+
93
+
94
+ expect(Object.keys(out).length).toBe(2);
95
+ expect(out.docType).toStrictEqual({ id: 0, name: "a_new_type" });
96
+ expect(out.isNewType).toBe(true);
97
+ })
98
+
99
+ test('$element with field', () => {
100
+ const params: Record<string, any> = {
101
+ docTypes: [{ id: 1, name: "type1" }, { id: 2, name: "type2" }],
102
+ objectId: "123"
103
+ }
104
+ const result = {
105
+ result: {
106
+ document_type: "type2",
107
+ }
108
+ }
109
+ const projection = {
110
+ other: null,
111
+ name: "${#.result.document_type}",
112
+ id: {
113
+ $element: {
114
+ field: "id",
115
+ from: "${docTypes}",
116
+ where: { name: { $eq: "${#.result.document_type}" } },
117
+ else: null
118
+ }
119
+ },
120
+ }
121
+
122
+ const out = makeProjection(projection, params, result);
123
+
124
+
125
+ expect(Object.keys(out).length).toBe(3);
126
+ expect(out).toStrictEqual({ id: 2, name: "type2", other: null });
127
+ })
128
+
129
+ test('$element with field - no match', () => {
130
+ const params: Record<string, any> = {
131
+ docTypes: [{ id: 1, name: "type1" }, { id: 2, name: "type2" }],
132
+ objectId: "123"
133
+ }
134
+ const result = {
135
+ result: {
136
+ document_type: "a_new_type",
137
+ }
138
+ }
139
+ const projection = {
140
+ other: null,
141
+ name: "${#.result.document_type}",
142
+ id: {
143
+ $element: {
144
+ field: "id",
145
+ from: "${docTypes}",
146
+ where: { name: { $eq: "${#.result.document_type}" } },
147
+ else: null
148
+ }
149
+ },
150
+ }
151
+
152
+ const out = makeProjection(projection, params, result);
153
+
154
+
155
+ expect(Object.keys(out).length).toBe(3);
156
+ expect(out).toStrictEqual({ id: null, name: "a_new_type", other: null });
157
+ })
158
+
159
+ });
@@ -0,0 +1,72 @@
1
+ import { DSLActivityExecutionPayload } from "@vertesia/common";
2
+ import { matchCondition } from "./conditions.js";
3
+ import { Vars } from "./vars.js";
4
+
5
+
6
+ interface ProjectOperation {
7
+ (arg: any, vars: Vars): any
8
+ }
9
+
10
+ interface ElementOperation {
11
+ field?: string,
12
+ from: any[],
13
+ where: Record<string, any>,
14
+ else: any
15
+ }
16
+ const operations: Record<string, ProjectOperation> = {
17
+ $element(arg: ElementOperation, _vars: Vars) {
18
+ const where = arg.where;
19
+ const whereKeys = Object.keys(where);
20
+ const r = arg.from.find((elem: any) => {
21
+ for (const key of whereKeys) {
22
+ const value = key === '_' ? elem : elem[key];
23
+ if (matchCondition(value, where[key])) {
24
+ return true;
25
+ }
26
+ }
27
+ return false;
28
+ })
29
+ if (arg.field) {
30
+ return r ? r[arg.field] : arg.else;
31
+ } else {
32
+ return r || arg.else;
33
+ }
34
+ },
35
+ $eval(arg: any, vars: Vars) {
36
+ return vars.match(arg);
37
+ }
38
+ }
39
+
40
+ function runProjection(obj: any, vars: Vars) {
41
+ if (obj && !Array.isArray(obj) && typeof obj === "object") {
42
+ const keys = Object.keys(obj)
43
+ if (keys.length === 1) {
44
+ const key = keys[0];
45
+ const fn = operations[key];
46
+ if (fn) {
47
+ return fn(obj[key], vars);
48
+ }
49
+ }
50
+ }
51
+ return obj; // return the value as is
52
+ }
53
+
54
+ export function projectResult<TParams extends Record<string, any>>(payload: DSLActivityExecutionPayload<TParams>, params: Record<string, any>, result: any, fallback: any) {
55
+ return payload.activity.projection ? makeProjection(payload.activity.projection, params, result) : fallback;
56
+ }
57
+
58
+ export function makeProjection(spec: Record<string, any>, params: Record<string, any>, result: any) {
59
+ const vars = new Vars({
60
+ ...params,
61
+ '#': result,
62
+ });
63
+
64
+ const projection = vars.resolveParams(spec);
65
+
66
+ const out: any = {}
67
+ for (const [key, value] of Object.entries(projection)) {
68
+ out[key] = runProjection(value, vars);
69
+ }
70
+
71
+ return out;
72
+ }