@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
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Use textract to convert a pdf into a data structure of the following format:
3
+ * <document>
4
+ * <page number="n">
5
+ * <text/>
6
+ * <table/>
7
+ * <text/>
8
+ * <figure/>
9
+ * ...
10
+ * </page>
11
+ */
12
+ import { fromWebToken } from "@aws-sdk/credential-providers";
13
+ import { SupportedIntegrations } from "@vertesia/common";
14
+ import { log } from "@temporalio/activity";
15
+ import { TextractProcessor } from "../../conversion/TextractProcessor.js";
16
+ import { setupActivity } from "../../dsl/setup/ActivityContext.js";
17
+ import { DocumentNotFoundError } from "../../errors.js";
18
+ import { TextExtractionStatus } from "../../result-types.js";
19
+ import { fetchBlobAsBuffer, md5 } from "../../utils/blobs.js";
20
+ import { countTokens } from "../../utils/tokens.js";
21
+ export async function convertPdfToStructuredText(payload) {
22
+ const { params, client, objectId } = await setupActivity(payload);
23
+ const object = await client.objects.retrieve(objectId, "+text");
24
+ if (object.text && !params.force) {
25
+ return { hasText: true, objectId, status: TextExtractionStatus.skipped, message: "text already present and force not enabled" };
26
+ }
27
+ if (!object.content?.source) {
28
+ throw new DocumentNotFoundError(`No source found for object ${objectId}`);
29
+ }
30
+ const pdfUrl = await client.store.objects.getContentSource(objectId).then(res => res.source);
31
+ if (!pdfUrl) {
32
+ throw new DocumentNotFoundError(`Error fetching source ${object.content.source}`);
33
+ }
34
+ const project = await client.getProject();
35
+ const awsConfig = (await client.projects.integrations.retrieve(project.id, SupportedIntegrations.aws));
36
+ const credentials = await getS3AWSCredentials(awsConfig, payload.auth_token, project.id);
37
+ const processor = new TextractProcessor({
38
+ fileKey: objectId,
39
+ region: "us-west-2",
40
+ bucket: "cp-textract-tests",
41
+ credentials,
42
+ log: log,
43
+ detectImages: true,
44
+ includeConfidenceInTables: true,
45
+ });
46
+ try {
47
+ if (!object.content.source.startsWith("s3://")) {
48
+ const buf = await fetchBlobAsBuffer(client, object.content.source);
49
+ await processor.upload(buf);
50
+ }
51
+ const jobId = await processor.startAnalysis(objectId);
52
+ let jobStatus = await processor.checkJobStatus(jobId);
53
+ while (jobStatus === "IN_PROGRESS") {
54
+ await new Promise(resolve => setTimeout(resolve, 5000));
55
+ jobStatus = await processor.checkJobStatus(jobId);
56
+ }
57
+ if (jobStatus === "SUCCEEDED") {
58
+ log.info(`Job ${jobId} succeeded, saving results`, { jobId });
59
+ const fText = await processor.processResults(jobId);
60
+ const tokensData = countTokens(fText);
61
+ const etag = object.content.etag ?? md5(fText);
62
+ const updateData = {
63
+ text: fText,
64
+ text_etag: etag,
65
+ tokens: {
66
+ ...tokensData,
67
+ etag: etag,
68
+ }
69
+ };
70
+ await client.objects.update(objectId, updateData);
71
+ console.log("Full text updated");
72
+ return { hasText: true, objectId, status: TextExtractionStatus.success, message: "Text extracted successfully" };
73
+ }
74
+ else {
75
+ throw new Error(`Job failed with status: ${jobStatus}`);
76
+ }
77
+ }
78
+ catch (error) {
79
+ console.error("Error processing document:", error);
80
+ throw error;
81
+ }
82
+ }
83
+ export async function getS3AWSCredentials(awsConfig, composableAuthToken, projectId) {
84
+ // fetch s3 role ARN
85
+ if (!awsConfig || !awsConfig.enabled) {
86
+ throw new DocumentNotFoundError("AWS integration is not enabled for this project");
87
+ }
88
+ if (!awsConfig.s3_role_arn) {
89
+ throw new DocumentNotFoundError("S3 Role ARN is not defined in AWS project integration");
90
+ }
91
+ log.info("Getting AWS credentials for Textract", { projectId, composableAuthToken, roleArn: awsConfig.s3_role_arn });
92
+ const credentials = fromWebToken({
93
+ webIdentityToken: composableAuthToken,
94
+ roleArn: awsConfig.s3_role_arn,
95
+ roleSessionName: `cp-project-textract-${projectId}`,
96
+ });
97
+ return credentials;
98
+ }
99
+ //# sourceMappingURL=processPdfWithTextract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processPdfWithTextract.js","sourceRoot":"","sources":["../../../../src/activities/media/processPdfWithTextract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { log } from "@temporalio/activity";
2
+ import { FetchClient } from "@vertesia/api-fetch-client";
3
+ import { SupportedIntegrations } from "@vertesia/common";
4
+ import { setupActivity } from "../../dsl/setup/ActivityContext.js";
5
+ import { TextExtractionStatus } from "../../result-types.js";
6
+ const GLADIA_URL = "https://api.gladia.io/v2";
7
+ /**
8
+ * Fetches transcription results from Gladia and saves them to the content object.
9
+ * This activity is called after transcribeMedia completes via webhook callback.
10
+ */
11
+ export async function saveGladiaTranscription(payload) {
12
+ const context = await setupActivity(payload);
13
+ const { params, client, inputType } = context;
14
+ const gladiaConfig = await client.projects.integrations.retrieve(payload.project_id, SupportedIntegrations.gladia);
15
+ if (!gladiaConfig || !gladiaConfig.enabled) {
16
+ return {
17
+ hasText: false,
18
+ objectId: inputType === 'objectIds' ? context.objectId : undefined,
19
+ status: TextExtractionStatus.error,
20
+ error: "Gladia integration not enabled",
21
+ };
22
+ }
23
+ const gladiaClient = new FetchClient(gladiaConfig.url ?? GLADIA_URL);
24
+ gladiaClient.withHeaders({ "x-gladia-key": gladiaConfig.api_key });
25
+ log.info(`Fetching transcription result from Gladia`, { transcriptionId: params.gladiaTranscriptionId });
26
+ const transcriptionResult = await gladiaClient.get(`/transcription/${params.gladiaTranscriptionId}`);
27
+ // Determine storage identifier based on input type
28
+ const storageId = inputType === 'objectIds' ? context.objectId : params.output_storage_path;
29
+ if (transcriptionResult.status === 'error') {
30
+ log.error(`Gladia transcription failed`, { error: transcriptionResult });
31
+ return {
32
+ hasText: false,
33
+ objectId: inputType === 'objectIds' ? context.objectId : undefined,
34
+ file: inputType === 'files' ? {
35
+ source_url: context.file.url,
36
+ } : undefined,
37
+ status: TextExtractionStatus.error,
38
+ error: "Gladia transcription failed",
39
+ };
40
+ }
41
+ if (transcriptionResult.status !== 'done') {
42
+ log.warn(`Gladia transcription not ready`, { storageId, status: transcriptionResult.status });
43
+ return {
44
+ hasText: false,
45
+ objectId: storageId,
46
+ status: TextExtractionStatus.error,
47
+ error: `Gladia transcription not ready: ${transcriptionResult.status}`,
48
+ };
49
+ }
50
+ const segments = processUtterances(transcriptionResult.result.transcription.utterances);
51
+ const fullText = transcriptionResult.result.transcription.full_transcript;
52
+ if (inputType === 'objectIds') {
53
+ // Object mode: save to object store
54
+ const objectId = context.objectId;
55
+ const object = await client.objects.retrieve(objectId, "+text");
56
+ await client.objects.update(objectId, {
57
+ text: fullText,
58
+ text_etag: object.content?.etag,
59
+ transcript: {
60
+ segments,
61
+ etag: object.content?.etag
62
+ },
63
+ metadata: {
64
+ ...object.metadata,
65
+ duration: transcriptionResult.result.metadata.audio_duration,
66
+ languages: transcriptionResult.result.transcription.languages
67
+ }
68
+ });
69
+ log.info(`Saved transcription for object`, { objectId, textLength: fullText?.length, segmentCount: segments.length });
70
+ }
71
+ else {
72
+ // File mode: don't save to object, just log
73
+ log.info(`Transcription completed (file mode, not saved to object)`, { storageId, textLength: fullText?.length, segmentCount: segments.length });
74
+ }
75
+ return {
76
+ hasText: (fullText?.length ?? 0) > 0,
77
+ objectId: storageId,
78
+ status: TextExtractionStatus.success,
79
+ message: `Transcription ${inputType === 'objectIds' ? 'saved' : 'completed'} with ${segments.length} segments`
80
+ };
81
+ }
82
+ function processUtterances(utterances) {
83
+ return utterances.map(u => ({
84
+ start: u.start,
85
+ end: u.end,
86
+ text: u.text,
87
+ speaker: u.speaker,
88
+ confidence: u.confidence,
89
+ language: u.language
90
+ }));
91
+ }
92
+ //# sourceMappingURL=saveGladiaTranscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saveGladiaTranscription.js","sourceRoot":"","sources":["../../../../src/activities/media/saveGladiaTranscription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { activityInfo, CompleteAsyncError, log } from "@temporalio/activity";
2
+ import { FetchClient, RequestError } from "@vertesia/api-fetch-client";
3
+ import { AUDIO_RENDITION_NAME, ContentNature, SupportedIntegrations } from "@vertesia/common";
4
+ import { setupActivity } from "../../dsl/setup/ActivityContext.js";
5
+ import { DocumentNotFoundError } from "../../errors.js";
6
+ import { TextExtractionStatus } from "../../index.js";
7
+ const GLADIA_URL = "https://api.gladia.io/v2";
8
+ export async function transcribeMedia(payload) {
9
+ const context = await setupActivity(payload);
10
+ const { params, client, inputType } = context;
11
+ const gladiaConfig = await client.projects.integrations.retrieve(payload.project_id, SupportedIntegrations.gladia);
12
+ if (!gladiaConfig || !gladiaConfig.enabled) {
13
+ return {
14
+ hasText: false,
15
+ objectId: inputType === 'objectIds' ? context.objectId : undefined,
16
+ status: TextExtractionStatus.error,
17
+ error: "Gladia integration not enabled",
18
+ };
19
+ }
20
+ const gladiaClient = new FetchClient(gladiaConfig.url ?? GLADIA_URL);
21
+ gladiaClient.withHeaders({ "x-gladia-key": gladiaConfig.api_key });
22
+ let mediaSource;
23
+ let storageId;
24
+ if (inputType === 'objectIds') {
25
+ // Object mode: fetch from object store
26
+ const objectId = context.objectId;
27
+ const object = await client.objects.retrieve(objectId, "+text");
28
+ if (object.text && !params.force) {
29
+ return { hasText: true, objectId, status: TextExtractionStatus.skipped, message: "text already present and force not enabled" };
30
+ }
31
+ if (!object.content?.source) {
32
+ throw new DocumentNotFoundError(`No source found for object ${objectId}`);
33
+ }
34
+ // Check for audio rendition in video metadata (preferred for videos)
35
+ mediaSource = object.content.source;
36
+ if (object.metadata?.type === ContentNature.Video) {
37
+ const videoMetadata = object.metadata;
38
+ const audioRendition = videoMetadata.renditions?.find(r => r.name === AUDIO_RENDITION_NAME);
39
+ if (audioRendition?.content?.source) {
40
+ mediaSource = audioRendition.content.source;
41
+ log.info(`Found audio rendition for video object ${objectId}`, { mediaSource });
42
+ }
43
+ }
44
+ storageId = objectId;
45
+ }
46
+ else {
47
+ // File mode: use file input
48
+ const file = context.file;
49
+ if (!params.output_storage_path) {
50
+ throw new DocumentNotFoundError("output_storage_path is required when using file input");
51
+ }
52
+ mediaSource = file.url;
53
+ storageId = params.output_storage_path;
54
+ }
55
+ // Get download URL for the media source
56
+ const { url: mediaUrl } = await client.files.getDownloadUrl(mediaSource);
57
+ if (!mediaUrl) {
58
+ throw new DocumentNotFoundError(`Error fetching media URL for ${mediaSource}`);
59
+ }
60
+ log.info(`Using media URL for transcription`, { storageId, mediaUrl: mediaSource });
61
+ const taskToken = Buffer.from(activityInfo().taskToken).toString('base64url');
62
+ const callbackUrl = generateCallbackUrlForGladia(client.store.baseUrl, taskToken);
63
+ log.info(`Transcribing media ${mediaUrl} with Gladia`, { storageId, callbackUrl });
64
+ try {
65
+ const res = await gladiaClient.post("/transcription", {
66
+ payload: {
67
+ audio_url: mediaUrl,
68
+ callback_url: callbackUrl,
69
+ diarization_enhanced: true,
70
+ enable_code_switching: true,
71
+ subtitles: true,
72
+ subtitles_config: {
73
+ formats: ["vtt"],
74
+ }
75
+ }
76
+ });
77
+ log.info(`Transcription request sent to Gladia`, { storageId, res });
78
+ }
79
+ catch (error) {
80
+ if (error instanceof RequestError && error.status === 422) {
81
+ return {
82
+ hasText: false,
83
+ objectId: storageId,
84
+ status: TextExtractionStatus.error,
85
+ error: `Gladia transcription error: ${error.message}`,
86
+ };
87
+ }
88
+ log.error(`Error sending transcription request to Gladia for storage ${storageId}`, { error });
89
+ throw error;
90
+ }
91
+ throw new CompleteAsyncError();
92
+ }
93
+ function generateCallbackUrlForGladia(baseUrl, taskToken) {
94
+ return `${baseUrl}/webhooks/gladia?task_token=${taskToken}`;
95
+ }
96
+ //# sourceMappingURL=transcribeMediaWithGladia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribeMediaWithGladia.js","sourceRoot":"","sources":["../../../../src/activities/media/transcribeMediaWithGladia.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ import { log } from "@temporalio/activity";
2
+ import { NodeStreamSource } from "@vertesia/client/node";
3
+ import { Readable } from "stream";
4
+ import { setupActivity } from "../dsl/setup/ActivityContext.js";
5
+ /**
6
+ * Directories to merge from child to parent.
7
+ * Only out/ and files/ are merged to avoid overwriting parent's scripts/skills.
8
+ */
9
+ const MERGE_DIRECTORIES = ['out', 'files'];
10
+ /**
11
+ * Files that should never be merged.
12
+ */
13
+ const EXCLUDED_FILES = ['conversation.json', 'tools.json'];
14
+ /**
15
+ * Merge artifacts from child workflow's agent space to parent workflow's agent space.
16
+ *
17
+ * Files are namespaced by child run ID to avoid conflicts:
18
+ * - Child's `files/output.json` → Parent's `files/{childRunId}/output.json`
19
+ * - Child's `out/report.pdf` → Parent's `out/{childRunId}/report.pdf`
20
+ *
21
+ * Returns the list of merged paths in the parent's space for the model to access.
22
+ */
23
+ export async function mergeChildArtifacts(payload) {
24
+ const { client, params } = await setupActivity(payload);
25
+ const childRunId = params.child_run_id;
26
+ const parentRunId = params.parent_run_id;
27
+ const directories = params.directories || MERGE_DIRECTORIES;
28
+ log.info(`Merging artifacts from child ${childRunId} to parent ${parentRunId}`, { directories });
29
+ // List all files in child's agent space
30
+ const childFiles = await client.files.listArtifacts(childRunId);
31
+ if (childFiles.length === 0) {
32
+ log.info("No artifacts in child agent space");
33
+ return { merged: 0, files: [] };
34
+ }
35
+ const mergedFiles = [];
36
+ for (const fullPath of childFiles) {
37
+ const relativePath = extractRelativePath(fullPath, childRunId);
38
+ if (!relativePath)
39
+ continue;
40
+ // Only merge specified directories
41
+ const dir = relativePath.split('/')[0];
42
+ if (!directories.includes(dir))
43
+ continue;
44
+ // Skip excluded files
45
+ const fileName = relativePath.split('/').pop() || '';
46
+ if (EXCLUDED_FILES.includes(fileName))
47
+ continue;
48
+ try {
49
+ // Create namespaced path: files/output.json -> files/{childRunId}/output.json
50
+ const namespacedPath = createNamespacedPath(relativePath, childRunId);
51
+ await copyArtifact(client, childRunId, parentRunId, relativePath, namespacedPath);
52
+ mergedFiles.push(namespacedPath);
53
+ }
54
+ catch (err) {
55
+ log.warn(`Failed to merge ${relativePath}: ${err.message}`);
56
+ }
57
+ }
58
+ log.info(`Merged ${mergedFiles.length} artifacts from child to parent`, { files: mergedFiles });
59
+ return { merged: mergedFiles.length, files: mergedFiles };
60
+ }
61
+ /**
62
+ * Create a namespaced path by inserting the child run ID after the directory.
63
+ * files/output.json -> files/{childRunId}/output.json
64
+ * out/subdir/report.pdf -> out/{childRunId}/subdir/report.pdf
65
+ */
66
+ function createNamespacedPath(relativePath, childRunId) {
67
+ const parts = relativePath.split('/');
68
+ if (parts.length < 2) {
69
+ // Single file at root (shouldn't happen, but handle it)
70
+ return `${childRunId}/${relativePath}`;
71
+ }
72
+ // Insert childRunId after the first directory
73
+ const dir = parts[0];
74
+ const rest = parts.slice(1).join('/');
75
+ return `${dir}/${childRunId}/${rest}`;
76
+ }
77
+ /**
78
+ * Extract relative path from full artifact storage path.
79
+ * Storage paths can be: "store_xxx/agents/{runId}/..." or "agents/{runId}/..."
80
+ */
81
+ function extractRelativePath(fullPath, runId) {
82
+ // Look for the pattern: agents/{runId}/
83
+ const marker = `/agents/${runId}/`;
84
+ const idx = fullPath.lastIndexOf(marker);
85
+ if (idx >= 0) {
86
+ return fullPath.slice(idx + marker.length);
87
+ }
88
+ // Also try without leading slash
89
+ const legacyPrefix = `agents/${runId}/`;
90
+ if (fullPath.startsWith(legacyPrefix)) {
91
+ return fullPath.slice(legacyPrefix.length);
92
+ }
93
+ // If path contains the runId, try to extract after it
94
+ const runIdIdx = fullPath.indexOf(runId);
95
+ if (runIdIdx >= 0) {
96
+ const afterRunId = fullPath.slice(runIdIdx + runId.length);
97
+ if (afterRunId.startsWith('/')) {
98
+ return afterRunId.slice(1);
99
+ }
100
+ }
101
+ return null;
102
+ }
103
+ /**
104
+ * Copy a single artifact from child to parent agent space with a new path
105
+ */
106
+ async function copyArtifact(client, childRunId, parentRunId, sourcePath, destPath) {
107
+ // Download from child's agent space
108
+ const stream = await client.files.downloadArtifact(childRunId, sourcePath);
109
+ // Convert web stream to node stream for upload
110
+ const nodeStream = Readable.fromWeb(stream);
111
+ // Determine mime type from extension
112
+ const mimeType = getMimeType(sourcePath);
113
+ const fileName = sourcePath.split('/').pop() || sourcePath;
114
+ // Upload to parent's agent space at the namespaced path
115
+ const source = new NodeStreamSource(nodeStream, fileName, mimeType);
116
+ await client.files.uploadArtifact(parentRunId, destPath, source);
117
+ }
118
+ /**
119
+ * Get mime type from file extension
120
+ */
121
+ function getMimeType(filePath) {
122
+ const ext = filePath.split('.').pop()?.toLowerCase();
123
+ const mimeTypes = {
124
+ 'json': 'application/json',
125
+ 'txt': 'text/plain',
126
+ 'md': 'text/markdown',
127
+ 'html': 'text/html',
128
+ 'csv': 'text/csv',
129
+ 'png': 'image/png',
130
+ 'jpg': 'image/jpeg',
131
+ 'jpeg': 'image/jpeg',
132
+ 'gif': 'image/gif',
133
+ 'svg': 'image/svg+xml',
134
+ 'pdf': 'application/pdf',
135
+ 'xml': 'application/xml',
136
+ 'zip': 'application/zip',
137
+ 'js': 'application/javascript',
138
+ 'ts': 'application/typescript',
139
+ 'py': 'text/x-python',
140
+ 'sh': 'text/x-shellscript',
141
+ 'bash': 'text/x-shellscript',
142
+ 'yaml': 'text/yaml',
143
+ 'yml': 'text/yaml',
144
+ };
145
+ return mimeTypes[ext || ''] || 'application/octet-stream';
146
+ }
147
+ //# sourceMappingURL=mergeChildArtifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeChildArtifacts.js","sourceRoot":"","sources":["../../../src/activities/mergeChildArtifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import { log } from "@temporalio/activity";
2
+ import { VertesiaClient } from "@vertesia/client";
3
+ import { ApiVersions } from "@vertesia/common";
4
+ import { setupActivity } from "../dsl/setup/ActivityContext.js";
5
+ import { WorkflowParamNotFoundError } from "../errors.js";
6
+ import { getVertesiaClientOptions } from "../utils/client.js";
7
+ export async function notifyWebhook(payload) {
8
+ const { params } = await setupActivity(payload);
9
+ const { webhook, method, headers: defaultHeaders } = params;
10
+ // resolve the url and the api version of the webhook
11
+ let target_url, version;
12
+ if (typeof webhook === 'string') {
13
+ target_url = webhook;
14
+ }
15
+ else {
16
+ target_url = webhook.url;
17
+ version = webhook.version;
18
+ }
19
+ if (!target_url)
20
+ throw new WorkflowParamNotFoundError('target_url');
21
+ const hasBody = method === 'POST'; //body is sent only for POST, always includes workflow info
22
+ const headers = {
23
+ ...defaultHeaders,
24
+ };
25
+ if (hasBody) {
26
+ headers['Content-Type'] = 'application/json';
27
+ }
28
+ const body = hasBody ? await createRequestBody(payload, params, version) : undefined;
29
+ log.info(`Notifying webhook at ${target_url}`);
30
+ const res = await fetch(target_url, {
31
+ method,
32
+ body,
33
+ headers,
34
+ }).catch(err => {
35
+ log.error(`An error occurred while notifying webhook at ${target_url}`, { err });
36
+ throw err;
37
+ });
38
+ if (!res.ok) {
39
+ log.warn(`Webhook endpoint ${target_url} returned an error - ${res.status} ${res.statusText}`, { fetchResponse: res });
40
+ // Try to get response payload for error message
41
+ let errorMessage = `Webhook Notification to ${target_url} failed with status: ${res.status} ${res.statusText}`;
42
+ try {
43
+ const responseText = await res.text();
44
+ if (responseText) {
45
+ errorMessage += ` - Response: ${responseText}`;
46
+ }
47
+ }
48
+ catch (readError) {
49
+ // If we can't read the response, just use the basic error message
50
+ log.debug('Could not read response body for error', { readError });
51
+ }
52
+ throw new Error(errorMessage);
53
+ }
54
+ return { status: res.status, message: res.statusText, url: res.url };
55
+ }
56
+ // --------------------------------------
57
+ // Data provider for webhooks
58
+ // this allows to customize the payload sent to the webhook depending on the
59
+ // type of workflow and the api version of the webhook
60
+ // --------------------------------------
61
+ function getWorkflowName(workflowType) {
62
+ // remove trailing Workflow or _Workflow case insensitive from the workflow type
63
+ return workflowType.replace(/_?workflow$/i, '');
64
+ }
65
+ async function createRequestBody(payload, params, api_version) {
66
+ if (api_version === undefined || Number(api_version) < ApiVersions.COMPLETION_RESULT_V1) {
67
+ return createOldRequestBody(payload, params);
68
+ }
69
+ else {
70
+ return createLatestRequestBody(payload, params, api_version);
71
+ }
72
+ }
73
+ async function createLatestRequestBody(payload, params, api_version) {
74
+ const data = await createEventData(payload, params, api_version);
75
+ return JSON.stringify({
76
+ workflow_id: params.workflow_id,
77
+ workflow_name: getWorkflowName(params.workflow_type),
78
+ workflow_run_id: params.workflow_run_id,
79
+ event_name: params.event_name,
80
+ detail: data,
81
+ });
82
+ }
83
+ async function createEventData(payload, params, api_version) {
84
+ const data = params.detail;
85
+ if (data && data.run_id && params.event_name === "workflow_completed" && params.workflow_type === 'ExecuteInteractionWorkflow') {
86
+ const client = getVersionedVertesiaClient(payload, api_version); //ensure client is initialized
87
+ // we replace the result property with the full execution run object
88
+ return await client.runs.retrieve(data.run_id);
89
+ }
90
+ return data;
91
+ }
92
+ function getVersionedVertesiaClient(payload, version) {
93
+ // set the api version header
94
+ return new VertesiaClient(getVertesiaClientOptions(payload)).withApiVersion(version ? String(version) : null);
95
+ }
96
+ // ----------------- Compatibility code -----------------
97
+ /* Before 2025-10-08 the notifyWebhook POST body was in the format:
98
+
99
+ {
100
+ "workflowId": "generation:ExecuteInteractionWorkflow:WhatColor:ox8wu6t4",
101
+ "runId": "0199c2c6-818f-77eb-b931-c1ba8b9e5184",
102
+ "status": "completed",
103
+ "result": {
104
+ "run_id": "68e616274b0e9bb510462378",
105
+ "status": "completed",
106
+ "result": {"Color": "white"}
107
+ }
108
+ }
109
+
110
+ After Versions.COMPLETION_RESULT_V1 (20250925) when the completion result interface changed we improved the
111
+ payload to the current format:
112
+
113
+ {
114
+ "workflow_id": "generation:ExecuteInteractionWorkflow:WhatColor:bdedqjqj6",
115
+ "workflow_name": "ExecuteInteraction",
116
+ "workflow_run_id": "0199c2d4-6b1d-7cf2-a1e5-4cac6778091e",
117
+ "event_name": "workflow_completed",
118
+ "detail": ExecutionRun
119
+ }
120
+
121
+ where ExecutionRun contains a result property with the new completion result format.
122
+
123
+ "result": [
124
+ {
125
+ "type": "json",
126
+ "value": {
127
+ "Color": "white"
128
+ }
129
+ }
130
+ ],
131
+
132
+ */
133
+ //@ts-ignore
134
+ async function createOldRequestBody(payload, params) {
135
+ let data = params.detail;
136
+ if (data && data.run_id && params.event_name === "workflow_completed" && params.workflow_type === 'ExecuteInteractionWorkflow') {
137
+ const client = getVersionedVertesiaClient(payload, null); //ensure client is using no specific version
138
+ // Important Note: we cannot use client.runs.retrieve since it will transform the run result to the new format because of InteractionOutput
139
+ const run = await client.runs.get(data.run_id);
140
+ // since we use an unversioned client the run will be in old format so we don't need to tranform the result
141
+ const result = run.result;
142
+ data = {
143
+ workflowId: params.workflow_id,
144
+ runId: params.workflow_run_id,
145
+ status: params.event_name === 'workflow_completed' ? 'completed' : params.event_name,
146
+ result: {
147
+ run_id: run.id,
148
+ status: run.status,
149
+ result: result || null
150
+ }
151
+ };
152
+ }
153
+ else {
154
+ // Always include workflow metadata in old format, even when detail is undefined
155
+ data = {
156
+ workflowId: params.workflow_id,
157
+ runId: params.workflow_run_id,
158
+ status: params.event_name === 'workflow_completed' ? 'completed' : params.event_name,
159
+ result: data || null
160
+ };
161
+ }
162
+ return JSON.stringify(data);
163
+ }
164
+ //# sourceMappingURL=notifyWebhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifyWebhook.js","sourceRoot":"","sources":["../../../src/activities/notifyWebhook.ts"],"names":[],"mappings":"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"}