@vertesia/workflow 1.0.0-dev.20260203.130115Z → 1.0.0-dev.20260225.024852Z

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 (442) hide show
  1. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +33 -0
  2. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  3. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +73 -0
  4. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  5. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +19 -0
  6. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  7. package/lib/cjs/activities/chunkDocument.js +87 -0
  8. package/lib/cjs/activities/chunkDocument.js.map +1 -0
  9. package/lib/cjs/activities/copyParentArtifacts.js +127 -0
  10. package/lib/cjs/activities/copyParentArtifacts.js.map +1 -0
  11. package/lib/cjs/activities/createDocumentFromOther.js +64 -0
  12. package/lib/cjs/activities/createDocumentFromOther.js.map +1 -0
  13. package/lib/cjs/activities/executeInteraction.js +194 -0
  14. package/lib/cjs/activities/executeInteraction.js.map +1 -0
  15. package/lib/cjs/activities/extractDocumentText.js +196 -0
  16. package/lib/cjs/activities/extractDocumentText.js.map +1 -0
  17. package/lib/cjs/activities/generateDocumentProperties.js +85 -0
  18. package/lib/cjs/activities/generateDocumentProperties.js.map +1 -0
  19. package/lib/cjs/activities/generateEmbeddings.js +267 -0
  20. package/lib/cjs/activities/generateEmbeddings.js.map +1 -0
  21. package/lib/cjs/activities/generateOrAssignContentType.js +125 -0
  22. package/lib/cjs/activities/generateOrAssignContentType.js.map +1 -0
  23. package/lib/cjs/activities/getObjectFromStore.js +20 -0
  24. package/lib/cjs/activities/getObjectFromStore.js.map +1 -0
  25. package/lib/cjs/activities/handleError.js +22 -0
  26. package/lib/cjs/activities/handleError.js.map +1 -0
  27. package/lib/cjs/activities/index-dsl.js +53 -0
  28. package/lib/cjs/activities/index-dsl.js.map +1 -0
  29. package/lib/cjs/activities/index.js +21 -0
  30. package/lib/cjs/activities/index.js.map +1 -0
  31. package/lib/cjs/activities/media/prepareAudio.js +239 -0
  32. package/lib/cjs/activities/media/prepareAudio.js.map +1 -0
  33. package/lib/cjs/activities/media/prepareVideo.js +429 -0
  34. package/lib/cjs/activities/media/prepareVideo.js.map +1 -0
  35. package/lib/cjs/activities/media/processPdfWithTextract.js +103 -0
  36. package/lib/cjs/activities/media/processPdfWithTextract.js.map +1 -0
  37. package/lib/cjs/activities/media/saveGladiaTranscription.js +95 -0
  38. package/lib/cjs/activities/media/saveGladiaTranscription.js.map +1 -0
  39. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +99 -0
  40. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +1 -0
  41. package/lib/cjs/activities/mergeChildArtifacts.js +150 -0
  42. package/lib/cjs/activities/mergeChildArtifacts.js.map +1 -0
  43. package/lib/cjs/activities/notifyWebhook.js +167 -0
  44. package/lib/cjs/activities/notifyWebhook.js.map +1 -0
  45. package/lib/cjs/activities/rateLimiter.js +30 -0
  46. package/lib/cjs/activities/rateLimiter.js.map +1 -0
  47. package/lib/cjs/activities/renditions/generateImageRendition.js +66 -0
  48. package/lib/cjs/activities/renditions/generateImageRendition.js.map +1 -0
  49. package/lib/cjs/activities/renditions/generateVideoRendition.js +200 -0
  50. package/lib/cjs/activities/renditions/generateVideoRendition.js.map +1 -0
  51. package/lib/cjs/activities/setDocumentStatus.js +26 -0
  52. package/lib/cjs/activities/setDocumentStatus.js.map +1 -0
  53. package/lib/cjs/conversion/TextractProcessor.js +417 -0
  54. package/lib/cjs/conversion/TextractProcessor.js.map +1 -0
  55. package/lib/cjs/conversion/image.js +149 -0
  56. package/lib/cjs/conversion/image.js.map +1 -0
  57. package/lib/cjs/conversion/markitdown.js +42 -0
  58. package/lib/cjs/conversion/markitdown.js.map +1 -0
  59. package/lib/cjs/conversion/mutool.js +147 -0
  60. package/lib/cjs/conversion/mutool.js.map +1 -0
  61. package/lib/cjs/conversion/pandoc.js +39 -0
  62. package/lib/cjs/conversion/pandoc.js.map +1 -0
  63. package/lib/cjs/dsl/conditions.js +81 -0
  64. package/lib/cjs/dsl/conditions.js.map +1 -0
  65. package/lib/cjs/dsl/dsl-workflow.js +380 -0
  66. package/lib/cjs/dsl/dsl-workflow.js.map +1 -0
  67. package/lib/cjs/dsl/dslProxyActivities.js +23 -0
  68. package/lib/cjs/dsl/dslProxyActivities.js.map +1 -0
  69. package/lib/cjs/dsl/projections.js +59 -0
  70. package/lib/cjs/dsl/projections.js.map +1 -0
  71. package/lib/cjs/dsl/setup/ActivityContext.js +178 -0
  72. package/lib/cjs/dsl/setup/ActivityContext.js.map +1 -0
  73. package/lib/cjs/dsl/setup/fetch/DataProvider.js +51 -0
  74. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +1 -0
  75. package/lib/cjs/dsl/setup/fetch/index.js +16 -0
  76. package/lib/cjs/dsl/setup/fetch/index.js.map +1 -0
  77. package/lib/cjs/dsl/setup/fetch/providers.js +67 -0
  78. package/lib/cjs/dsl/setup/fetch/providers.js.map +1 -0
  79. package/lib/cjs/dsl/test/test-child-workflow.js +10 -0
  80. package/lib/cjs/dsl/test/test-child-workflow.js.map +1 -0
  81. package/lib/cjs/dsl/validation.js +122 -0
  82. package/lib/cjs/dsl/validation.js.map +1 -0
  83. package/lib/cjs/dsl/vars.js +341 -0
  84. package/lib/cjs/dsl/vars.js.map +1 -0
  85. package/lib/cjs/dsl/walk.js +100 -0
  86. package/lib/cjs/dsl/walk.js.map +1 -0
  87. package/lib/cjs/dsl.js +20 -0
  88. package/lib/cjs/dsl.js.map +1 -0
  89. package/lib/cjs/errors.js +89 -0
  90. package/lib/cjs/errors.js.map +1 -0
  91. package/lib/cjs/index.js +57 -0
  92. package/lib/cjs/index.js.map +1 -0
  93. package/lib/cjs/iterative-generation/activities/extractToc.js +47 -0
  94. package/lib/cjs/iterative-generation/activities/extractToc.js.map +1 -0
  95. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +72 -0
  96. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +1 -0
  97. package/lib/cjs/iterative-generation/activities/generatePart.js +78 -0
  98. package/lib/cjs/iterative-generation/activities/generatePart.js.map +1 -0
  99. package/lib/cjs/iterative-generation/activities/generateToc.js +86 -0
  100. package/lib/cjs/iterative-generation/activities/generateToc.js.map +1 -0
  101. package/lib/cjs/iterative-generation/activities/index.js +12 -0
  102. package/lib/cjs/iterative-generation/activities/index.js.map +1 -0
  103. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +56 -0
  104. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  105. package/lib/cjs/iterative-generation/types.js +5 -0
  106. package/lib/cjs/iterative-generation/types.js.map +1 -0
  107. package/lib/cjs/iterative-generation/utils.js +121 -0
  108. package/lib/cjs/iterative-generation/utils.js.map +1 -0
  109. package/lib/cjs/package.json +3 -0
  110. package/lib/cjs/result-types.js +10 -0
  111. package/lib/cjs/result-types.js.map +1 -0
  112. package/lib/cjs/system/notifyWebhookWorkflow.js +53 -0
  113. package/lib/cjs/system/notifyWebhookWorkflow.js.map +1 -0
  114. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +33 -0
  115. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  116. package/lib/cjs/utils/auth.js +15 -0
  117. package/lib/cjs/utils/auth.js.map +1 -0
  118. package/lib/cjs/utils/blobs.js +64 -0
  119. package/lib/cjs/utils/blobs.js.map +1 -0
  120. package/lib/cjs/utils/chunks.js +14 -0
  121. package/lib/cjs/utils/chunks.js.map +1 -0
  122. package/lib/cjs/utils/client.js +31 -0
  123. package/lib/cjs/utils/client.js.map +1 -0
  124. package/lib/cjs/utils/expand-vars.js +33 -0
  125. package/lib/cjs/utils/expand-vars.js.map +1 -0
  126. package/lib/cjs/utils/memory.js +65 -0
  127. package/lib/cjs/utils/memory.js.map +1 -0
  128. package/lib/cjs/utils/renditions.js +92 -0
  129. package/lib/cjs/utils/renditions.js.map +1 -0
  130. package/lib/cjs/utils/storage.js +54 -0
  131. package/lib/cjs/utils/storage.js.map +1 -0
  132. package/lib/cjs/utils/text-preview-utils.js +43 -0
  133. package/lib/cjs/utils/text-preview-utils.js.map +1 -0
  134. package/lib/cjs/utils/tokens.js +38 -0
  135. package/lib/cjs/utils/tokens.js.map +1 -0
  136. package/lib/cjs/vars.js +20 -0
  137. package/lib/cjs/vars.js.map +1 -0
  138. package/lib/cjs/workflows.js +15 -0
  139. package/lib/cjs/workflows.js.map +1 -0
  140. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +30 -0
  141. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  142. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +70 -0
  143. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  144. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +16 -0
  145. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  146. package/lib/esm/activities/chunkDocument.js +84 -0
  147. package/lib/esm/activities/chunkDocument.js.map +1 -0
  148. package/lib/esm/activities/copyParentArtifacts.js +124 -0
  149. package/lib/esm/activities/copyParentArtifacts.js.map +1 -0
  150. package/lib/esm/activities/createDocumentFromOther.js +58 -0
  151. package/lib/esm/activities/createDocumentFromOther.js.map +1 -0
  152. package/lib/esm/activities/executeInteraction.js +190 -0
  153. package/lib/esm/activities/executeInteraction.js.map +1 -0
  154. package/lib/esm/activities/extractDocumentText.js +193 -0
  155. package/lib/esm/activities/extractDocumentText.js.map +1 -0
  156. package/lib/esm/activities/generateDocumentProperties.js +82 -0
  157. package/lib/esm/activities/generateDocumentProperties.js.map +1 -0
  158. package/lib/esm/activities/generateEmbeddings.js +264 -0
  159. package/lib/esm/activities/generateEmbeddings.js.map +1 -0
  160. package/lib/esm/activities/generateOrAssignContentType.js +122 -0
  161. package/lib/esm/activities/generateOrAssignContentType.js.map +1 -0
  162. package/lib/esm/activities/getObjectFromStore.js +17 -0
  163. package/lib/esm/activities/getObjectFromStore.js.map +1 -0
  164. package/lib/esm/activities/handleError.js +19 -0
  165. package/lib/esm/activities/handleError.js.map +1 -0
  166. package/lib/esm/activities/index-dsl.js +26 -0
  167. package/lib/esm/activities/index-dsl.js.map +1 -0
  168. package/lib/esm/activities/index.js +5 -0
  169. package/lib/esm/activities/index.js.map +1 -0
  170. package/lib/esm/activities/media/prepareAudio.js +200 -0
  171. package/lib/esm/activities/media/prepareAudio.js.map +1 -0
  172. package/lib/esm/activities/media/prepareVideo.js +390 -0
  173. package/lib/esm/activities/media/prepareVideo.js.map +1 -0
  174. package/lib/esm/activities/media/processPdfWithTextract.js +99 -0
  175. package/lib/esm/activities/media/processPdfWithTextract.js.map +1 -0
  176. package/lib/esm/activities/media/saveGladiaTranscription.js +92 -0
  177. package/lib/esm/activities/media/saveGladiaTranscription.js.map +1 -0
  178. package/lib/esm/activities/media/transcribeMediaWithGladia.js +96 -0
  179. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +1 -0
  180. package/lib/esm/activities/mergeChildArtifacts.js +147 -0
  181. package/lib/esm/activities/mergeChildArtifacts.js.map +1 -0
  182. package/lib/esm/activities/notifyWebhook.js +164 -0
  183. package/lib/esm/activities/notifyWebhook.js.map +1 -0
  184. package/lib/esm/activities/rateLimiter.js +27 -0
  185. package/lib/esm/activities/rateLimiter.js.map +1 -0
  186. package/lib/esm/activities/renditions/generateImageRendition.js +63 -0
  187. package/lib/esm/activities/renditions/generateImageRendition.js.map +1 -0
  188. package/lib/esm/activities/renditions/generateVideoRendition.js +194 -0
  189. package/lib/esm/activities/renditions/generateVideoRendition.js.map +1 -0
  190. package/lib/esm/activities/setDocumentStatus.js +23 -0
  191. package/lib/esm/activities/setDocumentStatus.js.map +1 -0
  192. package/lib/esm/conversion/TextractProcessor.js +410 -0
  193. package/lib/esm/conversion/TextractProcessor.js.map +1 -0
  194. package/lib/esm/conversion/image.js +143 -0
  195. package/lib/esm/conversion/image.js.map +1 -0
  196. package/lib/esm/conversion/markitdown.js +36 -0
  197. package/lib/esm/conversion/markitdown.js.map +1 -0
  198. package/lib/esm/conversion/mutool.js +139 -0
  199. package/lib/esm/conversion/mutool.js.map +1 -0
  200. package/lib/esm/conversion/pandoc.js +36 -0
  201. package/lib/esm/conversion/pandoc.js.map +1 -0
  202. package/lib/esm/dsl/conditions.js +75 -0
  203. package/lib/esm/dsl/conditions.js.map +1 -0
  204. package/lib/esm/dsl/dsl-workflow.js +373 -0
  205. package/lib/esm/dsl/dsl-workflow.js.map +1 -0
  206. package/lib/esm/dsl/dslProxyActivities.js +20 -0
  207. package/lib/esm/dsl/dslProxyActivities.js.map +1 -0
  208. package/lib/esm/dsl/projections.js +55 -0
  209. package/lib/esm/dsl/projections.js.map +1 -0
  210. package/lib/esm/dsl/setup/ActivityContext.js +173 -0
  211. package/lib/esm/dsl/setup/ActivityContext.js.map +1 -0
  212. package/lib/esm/dsl/setup/fetch/DataProvider.js +47 -0
  213. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +1 -0
  214. package/lib/esm/dsl/setup/fetch/index.js +12 -0
  215. package/lib/esm/dsl/setup/fetch/index.js.map +1 -0
  216. package/lib/esm/dsl/setup/fetch/providers.js +61 -0
  217. package/lib/esm/dsl/setup/fetch/providers.js.map +1 -0
  218. package/lib/esm/dsl/test/test-child-workflow.js +5 -0
  219. package/lib/esm/dsl/test/test-child-workflow.js.map +1 -0
  220. package/lib/esm/dsl/validation.js +118 -0
  221. package/lib/esm/dsl/validation.js.map +1 -0
  222. package/lib/esm/dsl/vars.js +335 -0
  223. package/lib/esm/dsl/vars.js.map +1 -0
  224. package/lib/esm/dsl/walk.js +96 -0
  225. package/lib/esm/dsl/walk.js.map +1 -0
  226. package/lib/esm/dsl.js +4 -0
  227. package/lib/esm/dsl.js.map +1 -0
  228. package/lib/esm/errors.js +78 -0
  229. package/lib/esm/errors.js.map +1 -0
  230. package/lib/esm/index.js +39 -0
  231. package/lib/esm/index.js.map +1 -0
  232. package/lib/esm/iterative-generation/activities/extractToc.js +44 -0
  233. package/lib/esm/iterative-generation/activities/extractToc.js.map +1 -0
  234. package/lib/esm/iterative-generation/activities/finalizeOutput.js +69 -0
  235. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +1 -0
  236. package/lib/esm/iterative-generation/activities/generatePart.js +75 -0
  237. package/lib/esm/iterative-generation/activities/generatePart.js.map +1 -0
  238. package/lib/esm/iterative-generation/activities/generateToc.js +83 -0
  239. package/lib/esm/iterative-generation/activities/generateToc.js.map +1 -0
  240. package/lib/esm/iterative-generation/activities/index.js +5 -0
  241. package/lib/esm/iterative-generation/activities/index.js.map +1 -0
  242. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +53 -0
  243. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  244. package/lib/esm/iterative-generation/types.js +2 -0
  245. package/lib/esm/iterative-generation/types.js.map +1 -0
  246. package/lib/esm/iterative-generation/utils.js +112 -0
  247. package/lib/esm/iterative-generation/utils.js.map +1 -0
  248. package/lib/esm/result-types.js +7 -0
  249. package/lib/esm/result-types.js.map +1 -0
  250. package/lib/esm/system/notifyWebhookWorkflow.js +50 -0
  251. package/lib/esm/system/notifyWebhookWorkflow.js.map +1 -0
  252. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +30 -0
  253. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  254. package/lib/esm/utils/auth.js +8 -0
  255. package/lib/esm/utils/auth.js.map +1 -0
  256. package/lib/esm/utils/blobs.js +54 -0
  257. package/lib/esm/utils/blobs.js.map +1 -0
  258. package/lib/esm/utils/chunks.js +9 -0
  259. package/lib/esm/utils/chunks.js.map +1 -0
  260. package/lib/esm/utils/client.js +27 -0
  261. package/lib/esm/utils/client.js.map +1 -0
  262. package/lib/esm/utils/expand-vars.js +30 -0
  263. package/lib/esm/utils/expand-vars.js.map +1 -0
  264. package/lib/esm/utils/memory.js +55 -0
  265. package/lib/esm/utils/memory.js.map +1 -0
  266. package/lib/esm/utils/renditions.js +84 -0
  267. package/lib/esm/utils/renditions.js.map +1 -0
  268. package/lib/esm/utils/storage.js +45 -0
  269. package/lib/esm/utils/storage.js.map +1 -0
  270. package/lib/esm/utils/text-preview-utils.js +38 -0
  271. package/lib/esm/utils/text-preview-utils.js.map +1 -0
  272. package/lib/esm/utils/tokens.js +34 -0
  273. package/lib/esm/utils/tokens.js.map +1 -0
  274. package/lib/esm/vars.js +4 -0
  275. package/lib/esm/vars.js.map +1 -0
  276. package/lib/esm/workflows.js +8 -0
  277. package/lib/esm/workflows.js.map +1 -0
  278. package/lib/tsconfig.tsbuildinfo +1 -0
  279. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +17 -0
  280. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +1 -0
  281. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +39 -0
  282. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +1 -0
  283. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +19 -0
  284. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +1 -0
  285. package/lib/types/activities/chunkDocument.d.ts +33 -0
  286. package/lib/types/activities/chunkDocument.d.ts.map +1 -0
  287. package/lib/types/activities/copyParentArtifacts.d.ts +19 -0
  288. package/lib/types/activities/copyParentArtifacts.d.ts.map +1 -0
  289. package/lib/types/activities/createDocumentFromOther.d.ts +21 -0
  290. package/lib/types/activities/createDocumentFromOther.d.ts.map +1 -0
  291. package/lib/types/activities/executeInteraction.d.ts +61 -0
  292. package/lib/types/activities/executeInteraction.d.ts.map +1 -0
  293. package/lib/types/activities/extractDocumentText.d.ts +11 -0
  294. package/lib/types/activities/extractDocumentText.d.ts.map +1 -0
  295. package/lib/types/activities/generateDocumentProperties.d.ts +32 -0
  296. package/lib/types/activities/generateDocumentProperties.d.ts.map +1 -0
  297. package/lib/types/activities/generateEmbeddings.d.ts +53 -0
  298. package/lib/types/activities/generateEmbeddings.d.ts.map +1 -0
  299. package/lib/types/activities/generateOrAssignContentType.d.ts +44 -0
  300. package/lib/types/activities/generateOrAssignContentType.d.ts.map +1 -0
  301. package/lib/types/activities/getObjectFromStore.d.ts +14 -0
  302. package/lib/types/activities/getObjectFromStore.d.ts.map +1 -0
  303. package/lib/types/activities/handleError.d.ts +6 -0
  304. package/lib/types/activities/handleError.d.ts.map +1 -0
  305. package/lib/types/activities/index-dsl.d.ts +26 -0
  306. package/lib/types/activities/index-dsl.d.ts.map +1 -0
  307. package/lib/types/activities/index.d.ts +5 -0
  308. package/lib/types/activities/index.d.ts.map +1 -0
  309. package/lib/types/activities/media/prepareAudio.d.ts +25 -0
  310. package/lib/types/activities/media/prepareAudio.d.ts.map +1 -0
  311. package/lib/types/activities/media/prepareVideo.d.ts +30 -0
  312. package/lib/types/activities/media/prepareVideo.d.ts.map +1 -0
  313. package/lib/types/activities/media/processPdfWithTextract.d.ts +26 -0
  314. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +1 -0
  315. package/lib/types/activities/media/saveGladiaTranscription.d.ts +15 -0
  316. package/lib/types/activities/media/saveGladiaTranscription.d.ts.map +1 -0
  317. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +20 -0
  318. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +1 -0
  319. package/lib/types/activities/mergeChildArtifacts.d.ts +24 -0
  320. package/lib/types/activities/mergeChildArtifacts.d.ts.map +1 -0
  321. package/lib/types/activities/notifyWebhook.d.ts +27 -0
  322. package/lib/types/activities/notifyWebhook.d.ts.map +1 -0
  323. package/lib/types/activities/rateLimiter.d.ts +11 -0
  324. package/lib/types/activities/rateLimiter.d.ts.map +1 -0
  325. package/lib/types/activities/renditions/generateImageRendition.d.ts +14 -0
  326. package/lib/types/activities/renditions/generateImageRendition.d.ts.map +1 -0
  327. package/lib/types/activities/renditions/generateVideoRendition.d.ts +15 -0
  328. package/lib/types/activities/renditions/generateVideoRendition.d.ts.map +1 -0
  329. package/lib/types/activities/setDocumentStatus.d.ts +15 -0
  330. package/lib/types/activities/setDocumentStatus.d.ts.map +1 -0
  331. package/lib/types/conversion/TextractProcessor.d.ts +45 -0
  332. package/lib/types/conversion/TextractProcessor.d.ts.map +1 -0
  333. package/lib/types/conversion/image.d.ts +13 -0
  334. package/lib/types/conversion/image.d.ts.map +1 -0
  335. package/lib/types/conversion/markitdown.d.ts +2 -0
  336. package/lib/types/conversion/markitdown.d.ts.map +1 -0
  337. package/lib/types/conversion/mutool.d.ts +19 -0
  338. package/lib/types/conversion/mutool.d.ts.map +1 -0
  339. package/lib/types/conversion/pandoc.d.ts +2 -0
  340. package/lib/types/conversion/pandoc.d.ts.map +1 -0
  341. package/lib/types/dsl/conditions.d.ts +2 -0
  342. package/lib/types/dsl/conditions.d.ts.map +1 -0
  343. package/lib/types/dsl/dsl-workflow.d.ts +5 -0
  344. package/lib/types/dsl/dsl-workflow.d.ts.map +1 -0
  345. package/lib/types/dsl/dslProxyActivities.d.ts +10 -0
  346. package/lib/types/dsl/dslProxyActivities.d.ts.map +1 -0
  347. package/lib/types/dsl/projections.d.ts +4 -0
  348. package/lib/types/dsl/projections.d.ts.map +1 -0
  349. package/lib/types/dsl/setup/ActivityContext.d.ts +47 -0
  350. package/lib/types/dsl/setup/ActivityContext.d.ts.map +1 -0
  351. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +9 -0
  352. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +1 -0
  353. package/lib/types/dsl/setup/fetch/index.d.ts +6 -0
  354. package/lib/types/dsl/setup/fetch/index.d.ts.map +1 -0
  355. package/lib/types/dsl/setup/fetch/providers.d.ts +25 -0
  356. package/lib/types/dsl/setup/fetch/providers.d.ts.map +1 -0
  357. package/lib/types/dsl/test/test-child-workflow.d.ts +4 -0
  358. package/lib/types/dsl/test/test-child-workflow.d.ts.map +1 -0
  359. package/lib/types/dsl/validation.d.ts +4 -0
  360. package/lib/types/dsl/validation.d.ts.map +1 -0
  361. package/lib/types/dsl/vars.d.ts +48 -0
  362. package/lib/types/dsl/vars.d.ts.map +1 -0
  363. package/lib/types/dsl/walk.d.ts +18 -0
  364. package/lib/types/dsl/walk.d.ts.map +1 -0
  365. package/lib/types/dsl.d.ts +4 -0
  366. package/lib/types/dsl.d.ts.map +1 -0
  367. package/lib/types/errors.d.ts +41 -0
  368. package/lib/types/errors.d.ts.map +1 -0
  369. package/lib/types/index.d.ts +38 -0
  370. package/lib/types/index.d.ts.map +1 -0
  371. package/lib/types/iterative-generation/activities/extractToc.d.ts +10 -0
  372. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +1 -0
  373. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +3 -0
  374. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +1 -0
  375. package/lib/types/iterative-generation/activities/generatePart.d.ts +3 -0
  376. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +1 -0
  377. package/lib/types/iterative-generation/activities/generateToc.d.ts +4 -0
  378. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +1 -0
  379. package/lib/types/iterative-generation/activities/index.d.ts +5 -0
  380. package/lib/types/iterative-generation/activities/index.d.ts.map +1 -0
  381. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +3 -0
  382. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +1 -0
  383. package/lib/types/iterative-generation/types.d.ts +79 -0
  384. package/lib/types/iterative-generation/types.d.ts.map +1 -0
  385. package/lib/types/iterative-generation/utils.d.ts +26 -0
  386. package/lib/types/iterative-generation/utils.d.ts.map +1 -0
  387. package/lib/types/result-types.d.ts +26 -0
  388. package/lib/types/result-types.d.ts.map +1 -0
  389. package/lib/types/system/notifyWebhookWorkflow.d.ts +8 -0
  390. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +1 -0
  391. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +25 -0
  392. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +1 -0
  393. package/lib/types/utils/auth.d.ts +4 -0
  394. package/lib/types/utils/auth.d.ts.map +1 -0
  395. package/lib/types/utils/blobs.d.ts +7 -0
  396. package/lib/types/utils/blobs.d.ts.map +1 -0
  397. package/lib/types/utils/chunks.d.ts +9 -0
  398. package/lib/types/utils/chunks.d.ts.map +1 -0
  399. package/lib/types/utils/client.d.ts +8 -0
  400. package/lib/types/utils/client.d.ts.map +1 -0
  401. package/lib/types/utils/expand-vars.d.ts +8 -0
  402. package/lib/types/utils/expand-vars.d.ts.map +1 -0
  403. package/lib/types/utils/memory.d.ts +8 -0
  404. package/lib/types/utils/memory.d.ts.map +1 -0
  405. package/lib/types/utils/renditions.d.ts +25 -0
  406. package/lib/types/utils/renditions.d.ts.map +1 -0
  407. package/lib/types/utils/storage.d.ts +16 -0
  408. package/lib/types/utils/storage.d.ts.map +1 -0
  409. package/lib/types/utils/text-preview-utils.d.ts +15 -0
  410. package/lib/types/utils/text-preview-utils.d.ts.map +1 -0
  411. package/lib/types/utils/tokens.d.ts +11 -0
  412. package/lib/types/utils/tokens.d.ts.map +1 -0
  413. package/lib/types/vars.d.ts +3 -0
  414. package/lib/types/vars.d.ts.map +1 -0
  415. package/lib/types/workflows.d.ts +8 -0
  416. package/lib/types/workflows.d.ts.map +1 -0
  417. package/lib/workflows-bundle.js +17846 -0
  418. package/package.json +6 -7
  419. package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +1 -1
  420. package/src/activities/chunkDocument.ts +3 -1
  421. package/src/activities/extractDocumentText.ts +84 -28
  422. package/src/activities/generateDocumentProperties.ts +4 -2
  423. package/src/activities/generateEmbeddings.ts +9 -9
  424. package/src/activities/generateOrAssignContentType.ts +2 -2
  425. package/src/activities/index-dsl.ts +4 -3
  426. package/src/activities/media/saveGladiaTranscription.test.ts +406 -0
  427. package/src/activities/media/saveGladiaTranscription.ts +41 -26
  428. package/src/activities/media/transcribeMediaWithGladia.test.ts +583 -0
  429. package/src/activities/media/transcribeMediaWithGladia.ts +46 -25
  430. package/src/activities/notifyWebhook.test.ts +121 -8
  431. package/src/activities/notifyWebhook.ts +10 -2
  432. package/src/activities/renditions/generateImageRendition.ts +2 -2
  433. package/src/conversion/image.test.ts +1 -0
  434. package/src/conversion/image.ts +10 -10
  435. package/src/dsl/dsl-workflow.ts +49 -9
  436. package/src/dsl/setup/ActivityContext.ts +73 -0
  437. package/src/dsl.ts +1 -0
  438. package/src/errors.ts +14 -0
  439. package/src/index.ts +6 -5
  440. package/src/result-types.ts +5 -1
  441. package/src/utils/renditions.ts +11 -5
  442. package/src/utils/text-preview-utils.ts +62 -0
@@ -9,6 +9,7 @@ import { TextExtractionResult, TextExtractionStatus } from "../../index.js";
9
9
  export interface TranscriptMediaParams {
10
10
  environmentId?: string;
11
11
  force?: boolean;
12
+ output_storage_path?: string;
12
13
  }
13
14
 
14
15
  export interface TranscriptMedia extends DSLActivitySpec<TranscriptMediaParams> {
@@ -28,39 +29,59 @@ const GLADIA_URL = "https://api.gladia.io/v2";
28
29
 
29
30
  export async function transcribeMedia(payload: DSLActivityExecutionPayload<TranscriptMediaParams>): Promise<TranscriptMediaResult> {
30
31
 
31
- const { params, client, objectId } = await setupActivity<TranscriptMediaParams>(payload);
32
+ const context = await setupActivity<TranscriptMediaParams>(payload);
33
+ const { params, client, inputType } = context;
32
34
 
33
35
  const gladiaConfig = await client.projects.integrations.retrieve(payload.project_id, SupportedIntegrations.gladia) as GladiaConfiguration | undefined;
34
36
  if (!gladiaConfig || !gladiaConfig.enabled) {
35
37
  return {
36
38
  hasText: false,
37
- objectId,
39
+ objectId: inputType === 'objectIds' ? context.objectId : undefined,
38
40
  status: TextExtractionStatus.error,
39
41
  error: "Gladia integration not enabled",
40
42
  }
41
43
  }
42
44
 
43
- const object = await client.objects.retrieve(objectId, "+text");
44
45
  const gladiaClient = new FetchClient(gladiaConfig.url ?? GLADIA_URL);
45
46
  gladiaClient.withHeaders({ "x-gladia-key": gladiaConfig.api_key });
46
47
 
47
- if (object.text && !params.force) {
48
- return { hasText: true, objectId, status: TextExtractionStatus.skipped, message: "text already present and force not enabled" }
49
- }
48
+ let mediaSource: string;
49
+ let storageId: string;
50
50
 
51
- if (!object.content?.source) {
52
- throw new DocumentNotFoundError(`No source found for object ${objectId}`);
53
- }
51
+ if (inputType === 'objectIds') {
52
+ // Object mode: fetch from object store
53
+ const objectId = context.objectId;
54
+ const object = await client.objects.retrieve(objectId, "+text");
55
+
56
+ if (object.text && !params.force) {
57
+ return { hasText: true, objectId, status: TextExtractionStatus.skipped, message: "text already present and force not enabled" }
58
+ }
59
+
60
+ if (!object.content?.source) {
61
+ throw new DocumentNotFoundError(`No source found for object ${objectId}`);
62
+ }
54
63
 
55
- // Check for audio rendition in video metadata (preferred for videos)
56
- let mediaSource: string = object.content.source;
57
- if (object.metadata?.type === ContentNature.Video) {
58
- const videoMetadata = object.metadata as VideoMetadata;
59
- const audioRendition = videoMetadata.renditions?.find(r => r.name === AUDIO_RENDITION_NAME);
60
- if (audioRendition?.content?.source) {
61
- mediaSource = audioRendition.content.source;
62
- log.info(`Found audio rendition for video object ${objectId}`, { mediaSource });
64
+ // Check for audio rendition in video metadata (preferred for videos)
65
+ mediaSource = object.content.source;
66
+ if (object.metadata?.type === ContentNature.Video) {
67
+ const videoMetadata = object.metadata as VideoMetadata;
68
+ const audioRendition = videoMetadata.renditions?.find(r => r.name === AUDIO_RENDITION_NAME);
69
+ if (audioRendition?.content?.source) {
70
+ mediaSource = audioRendition.content.source;
71
+ log.info(`Found audio rendition for video object ${objectId}`, { mediaSource });
72
+ }
63
73
  }
74
+
75
+ storageId = objectId;
76
+ } else {
77
+ // File mode: use file input
78
+ const file = context.file;
79
+ if (!params.output_storage_path) {
80
+ throw new DocumentNotFoundError("output_storage_path is required when using file input");
81
+ }
82
+
83
+ mediaSource = file.url;
84
+ storageId = params.output_storage_path;
64
85
  }
65
86
 
66
87
  // Get download URL for the media source
@@ -70,12 +91,12 @@ export async function transcribeMedia(payload: DSLActivityExecutionPayload<Trans
70
91
  throw new DocumentNotFoundError(`Error fetching media URL for ${mediaSource}`);
71
92
  }
72
93
 
73
- log.info(`Using media URL for transcription`, { objectId, mediaUrl: mediaSource });
94
+ log.info(`Using media URL for transcription`, { storageId, mediaUrl: mediaSource });
74
95
 
75
96
  const taskToken = Buffer.from(activityInfo().taskToken).toString('base64url');
76
- const callbackUrl = generateCallbackUrlForGladia(client.store.baseUrl, taskToken, objectId);
97
+ const callbackUrl = generateCallbackUrlForGladia(client.store.baseUrl, taskToken);
77
98
 
78
- log.info(`Transcribing media ${mediaUrl} with Gladia`, { objectId, callbackUrl });
99
+ log.info(`Transcribing media ${mediaUrl} with Gladia`, { storageId, callbackUrl });
79
100
 
80
101
  try {
81
102
  const res = await gladiaClient.post("/transcription", {
@@ -90,25 +111,25 @@ export async function transcribeMedia(payload: DSLActivityExecutionPayload<Trans
90
111
  }
91
112
  }
92
113
  }) as GladiaTranscriptRequestResponse;
93
- log.info(`Transcription request sent to Gladia`, { objectId, res });
114
+ log.info(`Transcription request sent to Gladia`, { storageId, res });
94
115
  } catch (error: any) {
95
116
  if (error instanceof RequestError && error.status === 422) {
96
117
  return {
97
118
  hasText: false,
98
- objectId,
119
+ objectId: storageId,
99
120
  status: TextExtractionStatus.error,
100
121
  error: `Gladia transcription error: ${error.message}`,
101
122
  }
102
123
  }
103
- log.error(`Error sending transcription request to Gladia for object ${objectId}`, { error });
124
+ log.error(`Error sending transcription request to Gladia for storage ${storageId}`, { error });
104
125
  throw error;
105
126
  }
106
127
 
107
128
  throw new CompleteAsyncError();
108
129
  }
109
130
 
110
- function generateCallbackUrlForGladia(baseUrl: string, taskToken: string, objectId: string) {
111
- return `${baseUrl}/webhooks/gladia/${objectId}?task_token=${taskToken}`;
131
+ function generateCallbackUrlForGladia(baseUrl: string, taskToken: string) {
132
+ return `${baseUrl}/webhooks/gladia?task_token=${taskToken}`;
112
133
  }
113
134
 
114
135
  interface GladiaTranscriptRequestResponse {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MockActivityEnvironment,
3
3
  } from "@temporalio/testing";
4
- import { ContentEventName, DSLActivityExecutionPayload } from "@vertesia/common";
4
+ import { ApiVersions, ContentEventName, DSLActivityExecutionPayload, WebHookSpec } from "@vertesia/common";
5
5
  import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
6
- import { notifyWebhook, NotifyWebhookParams } from "./notifyWebhook.js";
6
+ import { notifyWebhook, NotifyWebhookParams, WebhookNotificationPayload } from "./notifyWebhook.js";
7
7
 
8
8
  // Mock fetch globally
9
9
  vi.stubGlobal('fetch', vi.fn());
@@ -63,10 +63,15 @@ describe("Webhook should be notified", () => {
63
63
  const payload = createTestPayload();
64
64
  const res = await testEnv.run(notifyWebhook, payload);
65
65
 
66
- // Verify fetch was called with correct parameters
66
+ // Verify fetch was called with correct parameters (old format wraps detail in result)
67
67
  expect(mockFetch).toHaveBeenCalledWith(defaultParams.webhook, {
68
68
  method: 'POST',
69
- body: JSON.stringify({ message: 'Hello World' }),
69
+ body: JSON.stringify({
70
+ workflowId: 'wf_id',
71
+ runId: 'wf_run_id',
72
+ status: 'completed',
73
+ result: { message: 'Hello World' }
74
+ }),
70
75
  headers: {
71
76
  'Content-Type': 'application/json',
72
77
  },
@@ -98,10 +103,15 @@ describe("Webhook should be notified", () => {
98
103
  `Webhook Notification to ${defaultParams.webhook} failed with status: 500 Internal Server Error - Response: {"error": "Database connection failed", "code": "DB_ERROR"}`
99
104
  );
100
105
 
101
- // Verify fetch was called with correct parameters
106
+ // Verify fetch was called with correct parameters (old format wraps detail in result)
102
107
  expect(mockFetch).toHaveBeenCalledWith(defaultParams.webhook, {
103
108
  method: 'POST',
104
- body: JSON.stringify({ message: 'Hello World' }),
109
+ body: JSON.stringify({
110
+ workflowId: 'wf_id',
111
+ runId: 'wf_run_id',
112
+ status: 'completed',
113
+ result: { message: 'Hello World' }
114
+ }),
105
115
  headers: {
106
116
  'Content-Type': 'application/json',
107
117
  },
@@ -121,14 +131,117 @@ describe("Webhook should be notified", () => {
121
131
  // Expect the function to throw the network error
122
132
  await expect(testEnv.run(notifyWebhook, payload)).rejects.toThrow('Network request failed');
123
133
 
124
- // Verify fetch was called with correct parameters
134
+ // Verify fetch was called with correct parameters (old format wraps detail in result)
125
135
  expect(mockFetch).toHaveBeenCalledWith(defaultParams.webhook, {
126
136
  method: 'POST',
127
- body: JSON.stringify({ message: 'Hello World' }),
137
+ body: JSON.stringify({
138
+ workflowId: 'wf_id',
139
+ runId: 'wf_run_id',
140
+ status: 'completed',
141
+ result: { message: 'Hello World' }
142
+ }),
128
143
  headers: {
129
144
  'Content-Type': 'application/json',
130
145
  },
131
146
  });
132
147
  });
133
148
 
149
+ it("test POST with undefined detail still sends body with workflow info (new format)", async () => {
150
+ // Mock successful response
151
+ const mockResponse = {
152
+ ok: true,
153
+ status: 200,
154
+ statusText: 'OK',
155
+ url: 'https://vertesia.test'
156
+ };
157
+ mockFetch.mockResolvedValueOnce(mockResponse as Response);
158
+
159
+ // Create webhook spec with version to use new format
160
+ const webhookSpec: WebHookSpec = {
161
+ url: 'https://vertesia.test',
162
+ version: ApiVersions.COMPLETION_RESULT_V1
163
+ };
164
+
165
+ // Create payload with undefined detail (like workflow_failed events)
166
+ const payload = createTestPayload({
167
+ webhook: webhookSpec,
168
+ detail: undefined,
169
+ event_name: 'workflow_failed'
170
+ });
171
+
172
+ const res = await testEnv.run(notifyWebhook, payload);
173
+
174
+ // Verify fetch was called
175
+ expect(mockFetch).toHaveBeenCalledTimes(1);
176
+ const [_url, options] = mockFetch.mock.calls[0];
177
+
178
+ // Verify the body parameter is NOT undefined
179
+ expect(options?.body).toBeDefined();
180
+
181
+ // Verify the body contains workflow info
182
+ const bodyData = JSON.parse(options?.body as string) as WebhookNotificationPayload;
183
+ expect(bodyData.workflow_id).toBe('wf_id');
184
+ expect(bodyData.workflow_name).toBe('wfFuncName');
185
+ expect(bodyData.workflow_run_id).toBe('wf_run_id');
186
+ expect(bodyData.event_name).toBe('workflow_failed');
187
+ // detail should not be present when undefined (JSON.stringify omits it)
188
+ expect(bodyData.detail).toBeUndefined();
189
+
190
+ // Verify Content-Type header is set
191
+ const headers = options?.headers as Record<string, string>;
192
+ expect(headers['Content-Type']).toBe('application/json');
193
+
194
+ // Verify response
195
+ expect(res).toEqual({
196
+ status: 200,
197
+ message: 'OK',
198
+ url: webhookSpec.url
199
+ });
200
+ });
201
+
202
+ it("test POST with undefined detail still sends body with workflow info (old format)", async () => {
203
+ // Mock successful response
204
+ const mockResponse = {
205
+ ok: true,
206
+ status: 200,
207
+ statusText: 'OK',
208
+ url: 'https://vertesia.test'
209
+ };
210
+ mockFetch.mockResolvedValueOnce(mockResponse as Response);
211
+
212
+ // Create payload with string webhook (old format) and undefined detail
213
+ const payload = createTestPayload({
214
+ webhook: 'https://vertesia.test',
215
+ detail: undefined,
216
+ event_name: 'workflow_completed'
217
+ });
218
+
219
+ const res = await testEnv.run(notifyWebhook, payload);
220
+
221
+ // Verify fetch was called
222
+ expect(mockFetch).toHaveBeenCalledTimes(1);
223
+ const [_url, options] = mockFetch.mock.calls[0];
224
+
225
+ // Verify the body parameter is NOT undefined
226
+ expect(options?.body).toBeDefined();
227
+
228
+ // Verify the body contains workflow info in old format
229
+ const bodyData = JSON.parse(options?.body as string);
230
+ expect(bodyData.workflowId).toBe('wf_id');
231
+ expect(bodyData.runId).toBe('wf_run_id');
232
+ expect(bodyData.status).toBe('completed');
233
+ expect(bodyData.result).toBeNull(); // null when detail is undefined
234
+
235
+ // Verify Content-Type header is set
236
+ const headers = options?.headers as Record<string, string>;
237
+ expect(headers['Content-Type']).toBe('application/json');
238
+
239
+ // Verify response
240
+ expect(res).toEqual({
241
+ status: 200,
242
+ message: 'OK',
243
+ url: 'https://vertesia.test'
244
+ });
245
+ });
246
+
134
247
  });
@@ -45,7 +45,7 @@ export async function notifyWebhook(payload: DSLActivityExecutionPayload<NotifyW
45
45
 
46
46
  if (!target_url) throw new WorkflowParamNotFoundError('target_url');
47
47
 
48
- const hasBody = params.detail && method === 'POST'; //body is sent only for POST
48
+ const hasBody = method === 'POST'; //body is sent only for POST, always includes workflow info
49
49
 
50
50
  const headers = {
51
51
  ...defaultHeaders,
@@ -194,6 +194,14 @@ async function createOldRequestBody(payload: WorkflowExecutionBaseParams, params
194
194
  result: result || null
195
195
  }
196
196
  };
197
+ } else {
198
+ // Always include workflow metadata in old format, even when detail is undefined
199
+ data = {
200
+ workflowId: params.workflow_id,
201
+ runId: params.workflow_run_id,
202
+ status: params.event_name === 'workflow_completed' ? 'completed' : params.event_name,
203
+ result: data || null
204
+ };
197
205
  }
198
- return JSON.stringify(data || {});
206
+ return JSON.stringify(data);
199
207
  }
@@ -31,7 +31,7 @@ export async function generateImageRendition(
31
31
  format: originParams.format || (originParams as any).format_output || "png", // Default to png if format is missing
32
32
  };
33
33
 
34
- log.info(`Generating image rendition for ${objectId}`, {
34
+ log.debug(`Generating image rendition for ${objectId}`, {
35
35
  originParams,
36
36
  params,
37
37
  });
@@ -79,7 +79,7 @@ export async function generateImageRendition(
79
79
  client,
80
80
  inputObject.content.source,
81
81
  );
82
- log.info(`Image ${objectId} copied to ${imageFile}`);
82
+ log.debug(`Image ${objectId} copied to ${imageFile}`);
83
83
  renditionPages.push(imageFile);
84
84
 
85
85
 
@@ -7,6 +7,7 @@ import { expect, test, vi, describe } from "vitest";
7
7
  // Mock Temporal activity context
8
8
  vi.mock("@temporalio/activity", () => ({
9
9
  log: {
10
+ debug: vi.fn(),
10
11
  info: vi.fn(),
11
12
  warn: vi.fn(),
12
13
  error: vi.fn(),
@@ -24,7 +24,7 @@ export async function imageResizer(
24
24
  colorspaceCorrection: boolean = true,
25
25
  colorspace: 'RGB' | 'LAB' | 'LUV' | 'sigmoidal' = 'RGB'
26
26
  ): Promise<string> {
27
- log.info(`[image-resizer] Resizing image: ${inputPath} to max_hw: ${max_hw}, format: ${format}, progressive: ${progressive}, colorspaceCorrection: ${colorspaceCorrection ? colorspace : 'disabled'}`);
27
+ log.debug(`[image-resizer] Resizing image: ${inputPath} to max_hw: ${max_hw}, format: ${format}, progressive: ${progressive}, colorspaceCorrection: ${colorspaceCorrection ? colorspace : 'disabled'}`);
28
28
 
29
29
  const allowedFormats = ["jpg", "jpeg", "png", "webp"];
30
30
 
@@ -63,17 +63,17 @@ export async function imageResizer(
63
63
  const lowerFormat = format.toLowerCase();
64
64
  if (lowerFormat === "jpg" || lowerFormat === "jpeg") {
65
65
  conversionOption = "-interlace JPEG";
66
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
66
+ log.debug(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
67
67
  } else if (lowerFormat === "png") {
68
68
  conversionOption = "-interlace PNG";
69
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
69
+ log.debug(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
70
70
  } else if (lowerFormat === "gif") {
71
71
  conversionOption = "-interlace GIF";
72
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
72
+ log.debug(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
73
73
  }
74
74
  }
75
75
 
76
- log.info(`Resizing image using ImageMagick: ${inputPath} -> ${outputPath}`);
76
+ log.debug(`Resizing image using ImageMagick: ${inputPath} -> ${outputPath}`);
77
77
 
78
78
  const command = `convert`
79
79
  let args = [inputPath];
@@ -92,26 +92,26 @@ export async function imageResizer(
92
92
  // Linear light, recommended default
93
93
  // Convert from sRGB to linear RGB for processing
94
94
  args.push("-colorspace", "RGB");
95
- log.info("Using linear RGB colorspace for resize processing");
95
+ log.debug("Using linear RGB colorspace for resize processing");
96
96
  break;
97
97
  case 'LAB':
98
98
  // Perceptual linear light
99
99
  // Use LAB colorspace which separates intensity from color
100
100
  // Better for avoiding color clipping and distortion
101
101
  args.push("-colorspace", "LAB");
102
- log.info("Using LAB colorspace for resize processing");
102
+ log.debug("Using LAB colorspace for resize processing");
103
103
  break;
104
104
  case 'LUV':
105
105
  // Perceptual linear light
106
106
  // Alternative to LAB with perceptually uniform color deltas
107
107
  args.push("-colorspace", "LUV");
108
- log.info("Using LUV colorspace for resize processing");
108
+ log.debug("Using LUV colorspace for resize processing");
109
109
  break;
110
110
  case 'sigmoidal':
111
111
  // Sigmoidal colorspace modification to reduce ringing artifacts
112
112
  args.push("-colorspace", "RGB");
113
113
  args.push("+sigmoidal-contrast", "6.5,50%");
114
- log.info("Using sigmoidal contrast modification for resize processing");
114
+ log.debug("Using sigmoidal contrast modification for resize processing");
115
115
  break;
116
116
  }
117
117
  }
@@ -144,7 +144,7 @@ export async function imageResizer(
144
144
  // Output path
145
145
  args.push(outputPath);
146
146
 
147
- log.info(`ImageMagick command: ${command} ${args.join(" ")}`);
147
+ log.debug(`ImageMagick command: ${command} ${args.join(" ")}`);
148
148
 
149
149
  const { stderr } = await execFile(command, args);
150
150
 
@@ -20,14 +20,15 @@ import {
20
20
  DSLWorkflowSpec,
21
21
  getDocumentIds,
22
22
  getTenantId,
23
- WorkflowExecutionPayload
23
+ WorkflowExecutionPayload,
24
+ WorkflowInputFile
24
25
  } from "@vertesia/common";
25
26
  import ms, { StringValue } from 'ms';
26
27
  import { HandleDslErrorParams } from "../activities/handleError.js";
27
28
  import * as activities from "../activities/index.js";
29
+ import { RateLimitParams } from "../activities/rateLimiter.js";
28
30
  import { WF_NON_RETRYABLE_ERRORS, WorkflowParamNotFoundError } from "../errors.js";
29
31
  import { Vars } from "./vars.js";
30
- import { RateLimitParams } from "../activities/rateLimiter.js";
31
32
 
32
33
 
33
34
  interface BaseActivityPayload extends WorkflowExecutionPayload {
@@ -49,6 +50,23 @@ export async function dslWorkflow(payload: DSLWorkflowExecutionPayload) {
49
50
  if (!definition) {
50
51
  throw new WorkflowParamNotFoundError("workflow");
51
52
  }
53
+
54
+ // Normalize input: convert legacy objectIds format to new input format
55
+ if (!payload.input && payload.objectIds) {
56
+ payload.input = {
57
+ inputType: 'objectIds',
58
+ objectIds: payload.objectIds
59
+ };
60
+ }
61
+
62
+ // Validate that workflow has input
63
+ if (!payload.input && !payload.objectIds) {
64
+ throw new WorkflowParamNotFoundError(
65
+ "input",
66
+ definition
67
+ );
68
+ }
69
+
52
70
  // the base payload will be used to create the activities payload
53
71
  const basePayload: BaseActivityPayload = {
54
72
  ...payload,
@@ -73,12 +91,33 @@ export async function dslWorkflow(payload: DSLWorkflowExecutionPayload) {
73
91
  });
74
92
  const defaultProxy = proxyActivities(defaultOptions);
75
93
  log.debug("Default activity proxy is ready");
76
- // merge default vars with the payload vars and add objectIds and objectId
94
+
95
+ // Merge default vars with the payload vars and add input variables
96
+ const inputType = payload.input?.inputType || 'objectIds';
97
+
98
+ // Extract objectIds and files based on input type
99
+ let objectIds: string[] = [];
100
+ let files: WorkflowInputFile[] = [];
101
+
102
+ if (payload.input) {
103
+ if (payload.input.inputType === 'objectIds') {
104
+ objectIds = payload.input.objectIds;
105
+ } else if (payload.input.inputType === 'files') {
106
+ files = payload.input.files;
107
+ }
108
+ }
109
+
77
110
  const vars = new Vars({
78
111
  ...definition.vars,
79
112
  ...payload.vars,
80
- objectIds: payload.objectIds || [],
81
- objectId: payload.objectIds ? payload.objectIds[0] : undefined
113
+ // Add input type variables
114
+ inputType,
115
+ // Add objectIds variables (for objectIds input or backward compatibility)
116
+ objectIds,
117
+ objectId: objectIds[0],
118
+ // Add files variables (for files input)
119
+ files,
120
+ file: files[0],
82
121
  });
83
122
 
84
123
  log.info("Executing workflow", { payload });
@@ -290,9 +329,10 @@ async function runActivity(activity: DSLActivitySpec, basePayload: BaseActivityP
290
329
  log.info("Activity skipped: condition not satisfied", activity.condition);
291
330
  return;
292
331
  }
332
+
293
333
  const importParams = vars.createImportVars(activity.import);
294
334
  const executionPayload = dslActivityPayload(basePayload, activity, importParams);
295
- log.info("Executing activity: " + activity.name, { payload: executionPayload });
335
+ log.debug("Executing activity: " + activity.name, { payload: executionPayload });
296
336
 
297
337
  let proxy = defaultProxy;
298
338
  if (activity.options) {
@@ -324,7 +364,7 @@ async function runActivity(activity: DSLActivitySpec, basePayload: BaseActivityP
324
364
  ];
325
365
 
326
366
  if (activity.name && rateLimitedActivities.includes(activity.name)) {
327
- log.info(`Applying rate limit for activity ${activity.name}`);
367
+ log.debug(`Applying rate limit for activity ${activity.name}`);
328
368
  // Apply rate limiting logic here
329
369
  // Check rate limit first - loop until no delay
330
370
  const rateLimitParams = buildRateLimitParams(activity, executionPayload);
@@ -333,7 +373,7 @@ async function runActivity(activity: DSLActivitySpec, basePayload: BaseActivityP
333
373
  let rateLimitResult = await proxy.checkRateLimit(rateLimitPayload);
334
374
 
335
375
  while (rateLimitResult.delayMs > 0) {
336
- log.info(`Rate limit delay applied: ${rateLimitResult.delayMs}ms`);
376
+ log.debug(`Rate limit delay applied: ${rateLimitResult.delayMs}ms`);
337
377
  await sleep(rateLimitResult.delayMs);
338
378
 
339
379
  // Check again after sleeping
@@ -346,7 +386,7 @@ async function runActivity(activity: DSLActivitySpec, basePayload: BaseActivityP
346
386
  //TODO execute in parallel
347
387
  log.info("Parallel execution not yet implemented");
348
388
  } else {
349
- log.info("Executing activity: " + activity.name, { importParams });
389
+ log.debug("Executing activity: " + activity.name, { importParams });
350
390
  const result = await fn(executionPayload);
351
391
  if (activity.output) {
352
392
  vars.setValue(activity.output, result);
@@ -5,10 +5,13 @@ import {
5
5
  DSLWorkflowExecutionPayload,
6
6
  Project,
7
7
  WorkflowExecutionPayload,
8
+ WorkflowInputType,
9
+ WorkflowInputFile,
8
10
  } from "@vertesia/common";
9
11
  import {
10
12
  DocumentNotFoundError,
11
13
  WorkflowParamNotFoundError,
14
+ WorkflowExecutionError,
12
15
  } from "../../errors.js";
13
16
  import { getProjectFromToken } from "../../utils/auth.js";
14
17
  import { getVertesiaClient } from "../../utils/client.js";
@@ -99,6 +102,76 @@ export class ActivityContext<ParamsT extends Record<string, any>> {
99
102
  return workflowId;
100
103
  }
101
104
 
105
+ /**
106
+ * Get the workflow input type (objectIds or files).
107
+ * Defaults to 'objectIds' for backward compatibility with legacy format.
108
+ */
109
+ get inputType(): WorkflowInputType {
110
+ return this.payload.input?.inputType || 'objectIds';
111
+ }
112
+
113
+ /**
114
+ * Get the first file from the workflow input.
115
+ * Only available when workflow input type is 'files'.
116
+ * @throws {WorkflowExecutionError} If input type is not 'files'
117
+ * @throws {WorkflowParamNotFoundError} If files array is empty
118
+ */
119
+ get file(): WorkflowInputFile {
120
+ const input = this.payload.input;
121
+ if (!input || input.inputType !== 'files') {
122
+ throw new WorkflowExecutionError(
123
+ 'Activity expects files but received objectIds'
124
+ );
125
+ }
126
+ // TypeScript now knows input is { inputType: 'files', files: WorkflowInputFile[] }
127
+ const files = input.files;
128
+ if (!files || files.length === 0) {
129
+ log.error("No files found in payload");
130
+ throw new WorkflowParamNotFoundError(
131
+ "files[0]",
132
+ (
133
+ this
134
+ .payload as WorkflowExecutionPayload as DSLWorkflowExecutionPayload
135
+ ).workflow,
136
+ );
137
+ }
138
+ return files[0];
139
+ }
140
+
141
+ /**
142
+ * Get all files from the workflow input.
143
+ * Only available when workflow input type is 'files'.
144
+ * @throws {WorkflowExecutionError} If input type is not 'files'
145
+ */
146
+ get files(): WorkflowInputFile[] {
147
+ const input = this.payload.input;
148
+ if (!input || input.inputType !== 'files') {
149
+ throw new WorkflowExecutionError(
150
+ 'Activity expects files but received objectIds'
151
+ );
152
+ }
153
+ // TypeScript now knows input is { inputType: 'files', files: WorkflowInputFile[] }
154
+ return input.files;
155
+ }
156
+
157
+ /**
158
+ * Generic accessor for the first input (objectId or file URL).
159
+ * Use this in dual-mode activities that support both input types.
160
+ * For files, returns the URL of the first file.
161
+ */
162
+ get input(): string {
163
+ return this.inputType === 'objectIds' ? this.objectId : this.file.url;
164
+ }
165
+
166
+ /**
167
+ * Generic accessor for all inputs (objectIds or file URLs).
168
+ * Use this in dual-mode activities that support both input types.
169
+ * For files, returns an array of URLs.
170
+ */
171
+ get inputs(): string[] {
172
+ return this.inputType === 'objectIds' ? (this.objectIds || []) : this.files.map(f => f.url);
173
+ }
174
+
102
175
  fetchProject() {
103
176
  if (!this._project) {
104
177
  this._project = _fetchProject(this.client, this.payload);
package/src/dsl.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./dsl/dslProxyActivities.js";
2
2
  export * from "./errors.js";
3
3
  export * from "./result-types.js";
4
+
package/src/errors.ts CHANGED
@@ -91,6 +91,19 @@ export class TokenExpiredError extends ApplicationFailure {
91
91
  }
92
92
  }
93
93
 
94
+ export class WorkflowExecutionError extends ApplicationFailure {
95
+ constructor(
96
+ message: string,
97
+ public workflow?: DSLWorkflowSpec,
98
+ ) {
99
+ super(
100
+ message,
101
+ "WorkflowExecutionError",
102
+ true, // non-retryable
103
+ );
104
+ }
105
+ }
106
+
94
107
  export const WF_NON_RETRYABLE_ERRORS = [
95
108
  "DocumentNotFoundError",
96
109
  "ActivityParamInvalidError",
@@ -99,4 +112,5 @@ export const WF_NON_RETRYABLE_ERRORS = [
99
112
  "InvalidContentTypeError",
100
113
  "TokenExpiredError",
101
114
  "ZenoClientNotFoundError",
115
+ "WorkflowExecutionError",
102
116
  ];