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

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 (407) hide show
  1. package/bin/bundle-workflows.mjs +13 -0
  2. package/package.json +16 -16
  3. package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +1 -1
  4. package/src/activities/advanced/updateDocumentFromInteractionRun.ts +1 -1
  5. package/src/activities/copyParentArtifacts.ts +162 -0
  6. package/src/activities/extractDocumentText.ts +4 -1
  7. package/src/activities/generateDocumentProperties.ts +1 -1
  8. package/src/activities/generateEmbeddings.ts +52 -9
  9. package/src/activities/index-dsl.ts +3 -1
  10. package/src/activities/media/prepareAudio.ts +334 -0
  11. package/src/activities/mergeChildArtifacts.ts +189 -0
  12. package/src/activities/setDocumentStatus.ts +12 -4
  13. package/src/dsl/dsl-workflow.ts +11 -1
  14. package/src/errors.ts +15 -0
  15. package/src/index.ts +1 -0
  16. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -33
  17. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  18. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -73
  19. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  20. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +0 -19
  21. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  22. package/lib/cjs/activities/chunkDocument.js +0 -85
  23. package/lib/cjs/activities/chunkDocument.js.map +0 -1
  24. package/lib/cjs/activities/createDocumentFromOther.js +0 -64
  25. package/lib/cjs/activities/createDocumentFromOther.js.map +0 -1
  26. package/lib/cjs/activities/executeInteraction.js +0 -194
  27. package/lib/cjs/activities/executeInteraction.js.map +0 -1
  28. package/lib/cjs/activities/extractDocumentText.js +0 -156
  29. package/lib/cjs/activities/extractDocumentText.js.map +0 -1
  30. package/lib/cjs/activities/generateDocumentProperties.js +0 -83
  31. package/lib/cjs/activities/generateDocumentProperties.js.map +0 -1
  32. package/lib/cjs/activities/generateEmbeddings.js +0 -228
  33. package/lib/cjs/activities/generateEmbeddings.js.map +0 -1
  34. package/lib/cjs/activities/generateOrAssignContentType.js +0 -125
  35. package/lib/cjs/activities/generateOrAssignContentType.js.map +0 -1
  36. package/lib/cjs/activities/getObjectFromStore.js +0 -20
  37. package/lib/cjs/activities/getObjectFromStore.js.map +0 -1
  38. package/lib/cjs/activities/handleError.js +0 -22
  39. package/lib/cjs/activities/handleError.js.map +0 -1
  40. package/lib/cjs/activities/index-dsl.js +0 -47
  41. package/lib/cjs/activities/index-dsl.js.map +0 -1
  42. package/lib/cjs/activities/index.js +0 -21
  43. package/lib/cjs/activities/index.js.map +0 -1
  44. package/lib/cjs/activities/media/prepareVideo.js +0 -429
  45. package/lib/cjs/activities/media/prepareVideo.js.map +0 -1
  46. package/lib/cjs/activities/media/processPdfWithTextract.js +0 -103
  47. package/lib/cjs/activities/media/processPdfWithTextract.js.map +0 -1
  48. package/lib/cjs/activities/media/saveGladiaTranscription.js +0 -81
  49. package/lib/cjs/activities/media/saveGladiaTranscription.js.map +0 -1
  50. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +0 -82
  51. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +0 -1
  52. package/lib/cjs/activities/notifyWebhook.js +0 -158
  53. package/lib/cjs/activities/notifyWebhook.js.map +0 -1
  54. package/lib/cjs/activities/rateLimiter.js +0 -30
  55. package/lib/cjs/activities/rateLimiter.js.map +0 -1
  56. package/lib/cjs/activities/renditions/generateImageRendition.js +0 -66
  57. package/lib/cjs/activities/renditions/generateImageRendition.js.map +0 -1
  58. package/lib/cjs/activities/renditions/generateVideoRendition.js +0 -200
  59. package/lib/cjs/activities/renditions/generateVideoRendition.js.map +0 -1
  60. package/lib/cjs/activities/setDocumentStatus.js +0 -15
  61. package/lib/cjs/activities/setDocumentStatus.js.map +0 -1
  62. package/lib/cjs/conversion/TextractProcessor.js +0 -417
  63. package/lib/cjs/conversion/TextractProcessor.js.map +0 -1
  64. package/lib/cjs/conversion/image.js +0 -149
  65. package/lib/cjs/conversion/image.js.map +0 -1
  66. package/lib/cjs/conversion/markitdown.js +0 -42
  67. package/lib/cjs/conversion/markitdown.js.map +0 -1
  68. package/lib/cjs/conversion/mutool.js +0 -147
  69. package/lib/cjs/conversion/mutool.js.map +0 -1
  70. package/lib/cjs/conversion/pandoc.js +0 -39
  71. package/lib/cjs/conversion/pandoc.js.map +0 -1
  72. package/lib/cjs/dsl/conditions.js +0 -81
  73. package/lib/cjs/dsl/conditions.js.map +0 -1
  74. package/lib/cjs/dsl/dsl-workflow.js +0 -343
  75. package/lib/cjs/dsl/dsl-workflow.js.map +0 -1
  76. package/lib/cjs/dsl/dslProxyActivities.js +0 -23
  77. package/lib/cjs/dsl/dslProxyActivities.js.map +0 -1
  78. package/lib/cjs/dsl/projections.js +0 -59
  79. package/lib/cjs/dsl/projections.js.map +0 -1
  80. package/lib/cjs/dsl/setup/ActivityContext.js +0 -122
  81. package/lib/cjs/dsl/setup/ActivityContext.js.map +0 -1
  82. package/lib/cjs/dsl/setup/fetch/DataProvider.js +0 -51
  83. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +0 -1
  84. package/lib/cjs/dsl/setup/fetch/index.js +0 -16
  85. package/lib/cjs/dsl/setup/fetch/index.js.map +0 -1
  86. package/lib/cjs/dsl/setup/fetch/providers.js +0 -67
  87. package/lib/cjs/dsl/setup/fetch/providers.js.map +0 -1
  88. package/lib/cjs/dsl/test/test-child-workflow.js +0 -10
  89. package/lib/cjs/dsl/test/test-child-workflow.js.map +0 -1
  90. package/lib/cjs/dsl/validation.js +0 -122
  91. package/lib/cjs/dsl/validation.js.map +0 -1
  92. package/lib/cjs/dsl/vars.js +0 -341
  93. package/lib/cjs/dsl/vars.js.map +0 -1
  94. package/lib/cjs/dsl/walk.js +0 -100
  95. package/lib/cjs/dsl/walk.js.map +0 -1
  96. package/lib/cjs/dsl.js +0 -20
  97. package/lib/cjs/dsl.js.map +0 -1
  98. package/lib/cjs/errors.js +0 -70
  99. package/lib/cjs/errors.js.map +0 -1
  100. package/lib/cjs/index.js +0 -55
  101. package/lib/cjs/index.js.map +0 -1
  102. package/lib/cjs/iterative-generation/activities/extractToc.js +0 -47
  103. package/lib/cjs/iterative-generation/activities/extractToc.js.map +0 -1
  104. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +0 -72
  105. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +0 -1
  106. package/lib/cjs/iterative-generation/activities/generatePart.js +0 -78
  107. package/lib/cjs/iterative-generation/activities/generatePart.js.map +0 -1
  108. package/lib/cjs/iterative-generation/activities/generateToc.js +0 -86
  109. package/lib/cjs/iterative-generation/activities/generateToc.js.map +0 -1
  110. package/lib/cjs/iterative-generation/activities/index.js +0 -12
  111. package/lib/cjs/iterative-generation/activities/index.js.map +0 -1
  112. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +0 -56
  113. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  114. package/lib/cjs/iterative-generation/types.js +0 -5
  115. package/lib/cjs/iterative-generation/types.js.map +0 -1
  116. package/lib/cjs/iterative-generation/utils.js +0 -121
  117. package/lib/cjs/iterative-generation/utils.js.map +0 -1
  118. package/lib/cjs/package.json +0 -3
  119. package/lib/cjs/result-types.js +0 -10
  120. package/lib/cjs/result-types.js.map +0 -1
  121. package/lib/cjs/system/notifyWebhookWorkflow.js +0 -53
  122. package/lib/cjs/system/notifyWebhookWorkflow.js.map +0 -1
  123. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +0 -33
  124. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  125. package/lib/cjs/utils/auth.js +0 -15
  126. package/lib/cjs/utils/auth.js.map +0 -1
  127. package/lib/cjs/utils/blobs.js +0 -64
  128. package/lib/cjs/utils/blobs.js.map +0 -1
  129. package/lib/cjs/utils/chunks.js +0 -14
  130. package/lib/cjs/utils/chunks.js.map +0 -1
  131. package/lib/cjs/utils/client.js +0 -31
  132. package/lib/cjs/utils/client.js.map +0 -1
  133. package/lib/cjs/utils/expand-vars.js +0 -33
  134. package/lib/cjs/utils/expand-vars.js.map +0 -1
  135. package/lib/cjs/utils/memory.js +0 -65
  136. package/lib/cjs/utils/memory.js.map +0 -1
  137. package/lib/cjs/utils/renditions.js +0 -88
  138. package/lib/cjs/utils/renditions.js.map +0 -1
  139. package/lib/cjs/utils/storage.js +0 -54
  140. package/lib/cjs/utils/storage.js.map +0 -1
  141. package/lib/cjs/utils/tokens.js +0 -38
  142. package/lib/cjs/utils/tokens.js.map +0 -1
  143. package/lib/cjs/vars.js +0 -20
  144. package/lib/cjs/vars.js.map +0 -1
  145. package/lib/cjs/workflows.js +0 -15
  146. package/lib/cjs/workflows.js.map +0 -1
  147. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -30
  148. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  149. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -70
  150. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  151. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +0 -16
  152. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  153. package/lib/esm/activities/chunkDocument.js +0 -82
  154. package/lib/esm/activities/chunkDocument.js.map +0 -1
  155. package/lib/esm/activities/createDocumentFromOther.js +0 -58
  156. package/lib/esm/activities/createDocumentFromOther.js.map +0 -1
  157. package/lib/esm/activities/executeInteraction.js +0 -190
  158. package/lib/esm/activities/executeInteraction.js.map +0 -1
  159. package/lib/esm/activities/extractDocumentText.js +0 -153
  160. package/lib/esm/activities/extractDocumentText.js.map +0 -1
  161. package/lib/esm/activities/generateDocumentProperties.js +0 -80
  162. package/lib/esm/activities/generateDocumentProperties.js.map +0 -1
  163. package/lib/esm/activities/generateEmbeddings.js +0 -225
  164. package/lib/esm/activities/generateEmbeddings.js.map +0 -1
  165. package/lib/esm/activities/generateOrAssignContentType.js +0 -122
  166. package/lib/esm/activities/generateOrAssignContentType.js.map +0 -1
  167. package/lib/esm/activities/getObjectFromStore.js +0 -17
  168. package/lib/esm/activities/getObjectFromStore.js.map +0 -1
  169. package/lib/esm/activities/handleError.js +0 -19
  170. package/lib/esm/activities/handleError.js.map +0 -1
  171. package/lib/esm/activities/index-dsl.js +0 -23
  172. package/lib/esm/activities/index-dsl.js.map +0 -1
  173. package/lib/esm/activities/index.js +0 -5
  174. package/lib/esm/activities/index.js.map +0 -1
  175. package/lib/esm/activities/media/prepareVideo.js +0 -390
  176. package/lib/esm/activities/media/prepareVideo.js.map +0 -1
  177. package/lib/esm/activities/media/processPdfWithTextract.js +0 -99
  178. package/lib/esm/activities/media/processPdfWithTextract.js.map +0 -1
  179. package/lib/esm/activities/media/saveGladiaTranscription.js +0 -78
  180. package/lib/esm/activities/media/saveGladiaTranscription.js.map +0 -1
  181. package/lib/esm/activities/media/transcribeMediaWithGladia.js +0 -79
  182. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +0 -1
  183. package/lib/esm/activities/notifyWebhook.js +0 -155
  184. package/lib/esm/activities/notifyWebhook.js.map +0 -1
  185. package/lib/esm/activities/rateLimiter.js +0 -27
  186. package/lib/esm/activities/rateLimiter.js.map +0 -1
  187. package/lib/esm/activities/renditions/generateImageRendition.js +0 -63
  188. package/lib/esm/activities/renditions/generateImageRendition.js.map +0 -1
  189. package/lib/esm/activities/renditions/generateVideoRendition.js +0 -194
  190. package/lib/esm/activities/renditions/generateVideoRendition.js.map +0 -1
  191. package/lib/esm/activities/setDocumentStatus.js +0 -12
  192. package/lib/esm/activities/setDocumentStatus.js.map +0 -1
  193. package/lib/esm/conversion/TextractProcessor.js +0 -410
  194. package/lib/esm/conversion/TextractProcessor.js.map +0 -1
  195. package/lib/esm/conversion/image.js +0 -143
  196. package/lib/esm/conversion/image.js.map +0 -1
  197. package/lib/esm/conversion/markitdown.js +0 -36
  198. package/lib/esm/conversion/markitdown.js.map +0 -1
  199. package/lib/esm/conversion/mutool.js +0 -139
  200. package/lib/esm/conversion/mutool.js.map +0 -1
  201. package/lib/esm/conversion/pandoc.js +0 -36
  202. package/lib/esm/conversion/pandoc.js.map +0 -1
  203. package/lib/esm/dsl/conditions.js +0 -75
  204. package/lib/esm/dsl/conditions.js.map +0 -1
  205. package/lib/esm/dsl/dsl-workflow.js +0 -336
  206. package/lib/esm/dsl/dsl-workflow.js.map +0 -1
  207. package/lib/esm/dsl/dslProxyActivities.js +0 -20
  208. package/lib/esm/dsl/dslProxyActivities.js.map +0 -1
  209. package/lib/esm/dsl/projections.js +0 -55
  210. package/lib/esm/dsl/projections.js.map +0 -1
  211. package/lib/esm/dsl/setup/ActivityContext.js +0 -117
  212. package/lib/esm/dsl/setup/ActivityContext.js.map +0 -1
  213. package/lib/esm/dsl/setup/fetch/DataProvider.js +0 -47
  214. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +0 -1
  215. package/lib/esm/dsl/setup/fetch/index.js +0 -12
  216. package/lib/esm/dsl/setup/fetch/index.js.map +0 -1
  217. package/lib/esm/dsl/setup/fetch/providers.js +0 -61
  218. package/lib/esm/dsl/setup/fetch/providers.js.map +0 -1
  219. package/lib/esm/dsl/test/test-child-workflow.js +0 -5
  220. package/lib/esm/dsl/test/test-child-workflow.js.map +0 -1
  221. package/lib/esm/dsl/validation.js +0 -118
  222. package/lib/esm/dsl/validation.js.map +0 -1
  223. package/lib/esm/dsl/vars.js +0 -335
  224. package/lib/esm/dsl/vars.js.map +0 -1
  225. package/lib/esm/dsl/walk.js +0 -96
  226. package/lib/esm/dsl/walk.js.map +0 -1
  227. package/lib/esm/dsl.js +0 -4
  228. package/lib/esm/dsl.js.map +0 -1
  229. package/lib/esm/errors.js +0 -61
  230. package/lib/esm/errors.js.map +0 -1
  231. package/lib/esm/index.js +0 -37
  232. package/lib/esm/index.js.map +0 -1
  233. package/lib/esm/iterative-generation/activities/extractToc.js +0 -44
  234. package/lib/esm/iterative-generation/activities/extractToc.js.map +0 -1
  235. package/lib/esm/iterative-generation/activities/finalizeOutput.js +0 -69
  236. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +0 -1
  237. package/lib/esm/iterative-generation/activities/generatePart.js +0 -75
  238. package/lib/esm/iterative-generation/activities/generatePart.js.map +0 -1
  239. package/lib/esm/iterative-generation/activities/generateToc.js +0 -83
  240. package/lib/esm/iterative-generation/activities/generateToc.js.map +0 -1
  241. package/lib/esm/iterative-generation/activities/index.js +0 -5
  242. package/lib/esm/iterative-generation/activities/index.js.map +0 -1
  243. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +0 -53
  244. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  245. package/lib/esm/iterative-generation/types.js +0 -2
  246. package/lib/esm/iterative-generation/types.js.map +0 -1
  247. package/lib/esm/iterative-generation/utils.js +0 -112
  248. package/lib/esm/iterative-generation/utils.js.map +0 -1
  249. package/lib/esm/result-types.js +0 -7
  250. package/lib/esm/result-types.js.map +0 -1
  251. package/lib/esm/system/notifyWebhookWorkflow.js +0 -50
  252. package/lib/esm/system/notifyWebhookWorkflow.js.map +0 -1
  253. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +0 -30
  254. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  255. package/lib/esm/utils/auth.js +0 -8
  256. package/lib/esm/utils/auth.js.map +0 -1
  257. package/lib/esm/utils/blobs.js +0 -54
  258. package/lib/esm/utils/blobs.js.map +0 -1
  259. package/lib/esm/utils/chunks.js +0 -9
  260. package/lib/esm/utils/chunks.js.map +0 -1
  261. package/lib/esm/utils/client.js +0 -27
  262. package/lib/esm/utils/client.js.map +0 -1
  263. package/lib/esm/utils/expand-vars.js +0 -30
  264. package/lib/esm/utils/expand-vars.js.map +0 -1
  265. package/lib/esm/utils/memory.js +0 -55
  266. package/lib/esm/utils/memory.js.map +0 -1
  267. package/lib/esm/utils/renditions.js +0 -80
  268. package/lib/esm/utils/renditions.js.map +0 -1
  269. package/lib/esm/utils/storage.js +0 -45
  270. package/lib/esm/utils/storage.js.map +0 -1
  271. package/lib/esm/utils/tokens.js +0 -34
  272. package/lib/esm/utils/tokens.js.map +0 -1
  273. package/lib/esm/vars.js +0 -4
  274. package/lib/esm/vars.js.map +0 -1
  275. package/lib/esm/workflows.js +0 -8
  276. package/lib/esm/workflows.js.map +0 -1
  277. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +0 -17
  278. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +0 -1
  279. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +0 -39
  280. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +0 -1
  281. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +0 -19
  282. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +0 -1
  283. package/lib/types/activities/chunkDocument.d.ts +0 -33
  284. package/lib/types/activities/chunkDocument.d.ts.map +0 -1
  285. package/lib/types/activities/createDocumentFromOther.d.ts +0 -21
  286. package/lib/types/activities/createDocumentFromOther.d.ts.map +0 -1
  287. package/lib/types/activities/executeInteraction.d.ts +0 -61
  288. package/lib/types/activities/executeInteraction.d.ts.map +0 -1
  289. package/lib/types/activities/extractDocumentText.d.ts +0 -10
  290. package/lib/types/activities/extractDocumentText.d.ts.map +0 -1
  291. package/lib/types/activities/generateDocumentProperties.d.ts +0 -32
  292. package/lib/types/activities/generateDocumentProperties.d.ts.map +0 -1
  293. package/lib/types/activities/generateEmbeddings.d.ts +0 -53
  294. package/lib/types/activities/generateEmbeddings.d.ts.map +0 -1
  295. package/lib/types/activities/generateOrAssignContentType.d.ts +0 -44
  296. package/lib/types/activities/generateOrAssignContentType.d.ts.map +0 -1
  297. package/lib/types/activities/getObjectFromStore.d.ts +0 -14
  298. package/lib/types/activities/getObjectFromStore.d.ts.map +0 -1
  299. package/lib/types/activities/handleError.d.ts +0 -6
  300. package/lib/types/activities/handleError.d.ts.map +0 -1
  301. package/lib/types/activities/index-dsl.d.ts +0 -23
  302. package/lib/types/activities/index-dsl.d.ts.map +0 -1
  303. package/lib/types/activities/index.d.ts +0 -5
  304. package/lib/types/activities/index.d.ts.map +0 -1
  305. package/lib/types/activities/media/prepareVideo.d.ts +0 -30
  306. package/lib/types/activities/media/prepareVideo.d.ts.map +0 -1
  307. package/lib/types/activities/media/processPdfWithTextract.d.ts +0 -26
  308. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +0 -1
  309. package/lib/types/activities/media/saveGladiaTranscription.d.ts +0 -14
  310. package/lib/types/activities/media/saveGladiaTranscription.d.ts.map +0 -1
  311. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +0 -19
  312. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +0 -1
  313. package/lib/types/activities/notifyWebhook.d.ts +0 -27
  314. package/lib/types/activities/notifyWebhook.d.ts.map +0 -1
  315. package/lib/types/activities/rateLimiter.d.ts +0 -11
  316. package/lib/types/activities/rateLimiter.d.ts.map +0 -1
  317. package/lib/types/activities/renditions/generateImageRendition.d.ts +0 -14
  318. package/lib/types/activities/renditions/generateImageRendition.d.ts.map +0 -1
  319. package/lib/types/activities/renditions/generateVideoRendition.d.ts +0 -15
  320. package/lib/types/activities/renditions/generateVideoRendition.d.ts.map +0 -1
  321. package/lib/types/activities/setDocumentStatus.d.ts +0 -15
  322. package/lib/types/activities/setDocumentStatus.d.ts.map +0 -1
  323. package/lib/types/conversion/TextractProcessor.d.ts +0 -45
  324. package/lib/types/conversion/TextractProcessor.d.ts.map +0 -1
  325. package/lib/types/conversion/image.d.ts +0 -13
  326. package/lib/types/conversion/image.d.ts.map +0 -1
  327. package/lib/types/conversion/markitdown.d.ts +0 -2
  328. package/lib/types/conversion/markitdown.d.ts.map +0 -1
  329. package/lib/types/conversion/mutool.d.ts +0 -19
  330. package/lib/types/conversion/mutool.d.ts.map +0 -1
  331. package/lib/types/conversion/pandoc.d.ts +0 -2
  332. package/lib/types/conversion/pandoc.d.ts.map +0 -1
  333. package/lib/types/dsl/conditions.d.ts +0 -2
  334. package/lib/types/dsl/conditions.d.ts.map +0 -1
  335. package/lib/types/dsl/dsl-workflow.d.ts +0 -5
  336. package/lib/types/dsl/dsl-workflow.d.ts.map +0 -1
  337. package/lib/types/dsl/dslProxyActivities.d.ts +0 -10
  338. package/lib/types/dsl/dslProxyActivities.d.ts.map +0 -1
  339. package/lib/types/dsl/projections.d.ts +0 -4
  340. package/lib/types/dsl/projections.d.ts.map +0 -1
  341. package/lib/types/dsl/setup/ActivityContext.d.ts +0 -17
  342. package/lib/types/dsl/setup/ActivityContext.d.ts.map +0 -1
  343. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +0 -9
  344. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +0 -1
  345. package/lib/types/dsl/setup/fetch/index.d.ts +0 -6
  346. package/lib/types/dsl/setup/fetch/index.d.ts.map +0 -1
  347. package/lib/types/dsl/setup/fetch/providers.d.ts +0 -25
  348. package/lib/types/dsl/setup/fetch/providers.d.ts.map +0 -1
  349. package/lib/types/dsl/test/test-child-workflow.d.ts +0 -4
  350. package/lib/types/dsl/test/test-child-workflow.d.ts.map +0 -1
  351. package/lib/types/dsl/validation.d.ts +0 -4
  352. package/lib/types/dsl/validation.d.ts.map +0 -1
  353. package/lib/types/dsl/vars.d.ts +0 -48
  354. package/lib/types/dsl/vars.d.ts.map +0 -1
  355. package/lib/types/dsl/walk.d.ts +0 -18
  356. package/lib/types/dsl/walk.d.ts.map +0 -1
  357. package/lib/types/dsl.d.ts +0 -4
  358. package/lib/types/dsl.d.ts.map +0 -1
  359. package/lib/types/errors.d.ts +0 -33
  360. package/lib/types/errors.d.ts.map +0 -1
  361. package/lib/types/index.d.ts +0 -36
  362. package/lib/types/index.d.ts.map +0 -1
  363. package/lib/types/iterative-generation/activities/extractToc.d.ts +0 -10
  364. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +0 -1
  365. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +0 -3
  366. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +0 -1
  367. package/lib/types/iterative-generation/activities/generatePart.d.ts +0 -3
  368. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +0 -1
  369. package/lib/types/iterative-generation/activities/generateToc.d.ts +0 -4
  370. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +0 -1
  371. package/lib/types/iterative-generation/activities/index.d.ts +0 -5
  372. package/lib/types/iterative-generation/activities/index.d.ts.map +0 -1
  373. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +0 -3
  374. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +0 -1
  375. package/lib/types/iterative-generation/types.d.ts +0 -79
  376. package/lib/types/iterative-generation/types.d.ts.map +0 -1
  377. package/lib/types/iterative-generation/utils.d.ts +0 -26
  378. package/lib/types/iterative-generation/utils.d.ts.map +0 -1
  379. package/lib/types/result-types.d.ts +0 -22
  380. package/lib/types/result-types.d.ts.map +0 -1
  381. package/lib/types/system/notifyWebhookWorkflow.d.ts +0 -8
  382. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +0 -1
  383. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +0 -25
  384. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +0 -1
  385. package/lib/types/utils/auth.d.ts +0 -4
  386. package/lib/types/utils/auth.d.ts.map +0 -1
  387. package/lib/types/utils/blobs.d.ts +0 -7
  388. package/lib/types/utils/blobs.d.ts.map +0 -1
  389. package/lib/types/utils/chunks.d.ts +0 -9
  390. package/lib/types/utils/chunks.d.ts.map +0 -1
  391. package/lib/types/utils/client.d.ts +0 -8
  392. package/lib/types/utils/client.d.ts.map +0 -1
  393. package/lib/types/utils/expand-vars.d.ts +0 -8
  394. package/lib/types/utils/expand-vars.d.ts.map +0 -1
  395. package/lib/types/utils/memory.d.ts +0 -8
  396. package/lib/types/utils/memory.d.ts.map +0 -1
  397. package/lib/types/utils/renditions.d.ts +0 -23
  398. package/lib/types/utils/renditions.d.ts.map +0 -1
  399. package/lib/types/utils/storage.d.ts +0 -16
  400. package/lib/types/utils/storage.d.ts.map +0 -1
  401. package/lib/types/utils/tokens.d.ts +0 -11
  402. package/lib/types/utils/tokens.d.ts.map +0 -1
  403. package/lib/types/vars.d.ts +0 -3
  404. package/lib/types/vars.d.ts.map +0 -1
  405. package/lib/types/workflows.d.ts +0 -8
  406. package/lib/types/workflows.d.ts.map +0 -1
  407. package/lib/workflows-bundle.js +0 -16226
@@ -0,0 +1,334 @@
1
+ import { log } from '@temporalio/activity';
2
+ import { DSLActivityExecutionPayload, DSLActivitySpec, AudioMetadata, AUDIO_RENDITION_NAME, ContentNature, Rendition } from '@vertesia/common';
3
+ import { exec } from 'child_process';
4
+ import fs from 'fs';
5
+ import os from 'os';
6
+ import path from 'path';
7
+ import { promisify } from 'util';
8
+ import { setupActivity } from '../../dsl/setup/ActivityContext.js';
9
+ import { DocumentNotFoundError, InvalidContentTypeError } from '../../errors.js';
10
+ import { saveBlobToTempFile } from '../../utils/blobs.js';
11
+ import { VertesiaClient } from '@vertesia/client';
12
+ import { RequestError } from '@vertesia/api-fetch-client';
13
+
14
+ const execAsync = promisify(exec);
15
+
16
+ // Default configuration constants
17
+ const DEFAULT_AUDIO_BITRATE = '128k'; // Default audio bitrate for AAC encoding
18
+ const FFMPEG_MAX_BUFFER = 1024 * 1024 * 10; // 10MB buffer for ffmpeg output
19
+
20
+ export interface PrepareAudioParams {
21
+ audioBitrate?: string; // Audio bitrate for AAC encoding, default '128k'
22
+ }
23
+
24
+ export interface PrepareAudio extends DSLActivitySpec<PrepareAudioParams> {
25
+ name: 'prepareAudio';
26
+ }
27
+
28
+ interface AudioMetadataExtended {
29
+ duration: number;
30
+ codec: string;
31
+ bitrate: number;
32
+ sampleRate: number;
33
+ channels: number;
34
+ }
35
+
36
+ interface FFProbeStream {
37
+ codec_type: string;
38
+ codec_name?: string;
39
+ sample_rate?: string;
40
+ channels?: number;
41
+ bit_rate?: string;
42
+ }
43
+
44
+ interface FFProbeFormat {
45
+ duration?: string;
46
+ bit_rate?: string;
47
+ }
48
+
49
+ interface FFProbeOutput {
50
+ streams: FFProbeStream[];
51
+ format: FFProbeFormat;
52
+ }
53
+
54
+ export interface PrepareAudioMetadata {
55
+ duration: number;
56
+ codec: string;
57
+ bitrate: number;
58
+ sampleRate: number;
59
+ channels: number;
60
+ }
61
+
62
+ export interface PrepareAudioResult {
63
+ objectId: string;
64
+ metadata: PrepareAudioMetadata;
65
+ renditions: Rendition[];
66
+ status: 'success';
67
+ }
68
+
69
+ /**
70
+ * Extract comprehensive audio metadata using ffprobe
71
+ */
72
+ async function getAudioMetadata(audioPath: string): Promise<AudioMetadataExtended> {
73
+ try {
74
+ const command = `ffprobe -v quiet -print_format json -show_format -show_streams "${audioPath}"`;
75
+ const { stdout } = await execAsync(command);
76
+ const metadata = JSON.parse(stdout) as FFProbeOutput;
77
+
78
+ const audioStream = metadata.streams.find(
79
+ (stream) => stream.codec_type === 'audio',
80
+ );
81
+
82
+ if (!audioStream) {
83
+ throw new Error('No audio stream found in file');
84
+ }
85
+
86
+ const duration = parseFloat(metadata.format.duration ?? '0') || 0;
87
+ const codec = audioStream.codec_name || 'unknown';
88
+ const bitrate = parseInt(audioStream.bit_rate ?? metadata.format.bit_rate ?? '0', 10) || 0;
89
+ const sampleRate = parseInt(audioStream.sample_rate ?? '0', 10) || 0;
90
+ const channels = audioStream.channels || 0;
91
+
92
+ return { duration, codec, bitrate, sampleRate, channels };
93
+ } catch (error) {
94
+ log.error(
95
+ `Failed to get audio metadata: ${error instanceof Error ? error.message : 'Unknown error'}`,
96
+ );
97
+ throw new Error(
98
+ `Failed to probe audio metadata: ${error instanceof Error ? error.message : 'Unknown error'}`,
99
+ );
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Generate a web-compatible audio rendition (AAC in M4A container)
105
+ * Ensures broad browser compatibility for HTML5 audio playback
106
+ */
107
+ async function generateAudioRendition(
108
+ audioPath: string,
109
+ outputDir: string,
110
+ audioBitrate: string,
111
+ ): Promise<string | null> {
112
+ const outputFile = path.join(outputDir, 'audio.m4a');
113
+
114
+ const command = [
115
+ 'ffmpeg',
116
+ '-y', // Overwrite output
117
+ '-i', `"${audioPath}"`,
118
+ '-c:a', 'aac', // AAC codec
119
+ '-b:a', audioBitrate, // Audio bitrate
120
+ '-movflags', '+faststart', // Enable streaming
121
+ `"${outputFile}"`,
122
+ ].join(' ');
123
+
124
+ log.info('Generating web audio rendition (AAC M4A)', { command, audioBitrate });
125
+
126
+ try {
127
+ const { stderr } = await execAsync(command, { maxBuffer: FFMPEG_MAX_BUFFER });
128
+
129
+ if (stderr && !stderr.includes('frame=')) {
130
+ log.debug(`FFmpeg stderr for audio rendition: ${stderr}`);
131
+ }
132
+
133
+ // Verify output file was created
134
+ try {
135
+ await fs.promises.access(outputFile, fs.constants.F_OK);
136
+ log.info(`Generated web audio rendition: ${outputFile}`);
137
+ return outputFile;
138
+ } catch {
139
+ log.warn('Audio rendition not generated');
140
+ return null;
141
+ }
142
+ } catch (error) {
143
+ log.error(
144
+ `Failed to generate audio rendition: ${error instanceof Error ? error.message : 'Unknown error'}`,
145
+ );
146
+ return null;
147
+ }
148
+ }
149
+
150
+ /**
151
+ * Upload a file to the storage and return its URI
152
+ */
153
+ async function uploadFile(
154
+ client: VertesiaClient,
155
+ filePath: string,
156
+ mimeType: string,
157
+ fileName: string,
158
+ storagePath: string,
159
+ ): Promise<string> {
160
+ const { NodeStreamSource } = await import('@vertesia/client/node');
161
+ const fileStream = fs.createReadStream(filePath);
162
+ const source = new NodeStreamSource(fileStream, fileName, mimeType, storagePath);
163
+
164
+ const result = await client.files.uploadFile(source);
165
+ log.info(`Uploaded file to ${storagePath}`, { result });
166
+
167
+ return result;
168
+ }
169
+
170
+ /**
171
+ * Upload audio file and create a rendition entry
172
+ */
173
+ async function uploadAudioAsRendition(
174
+ client: VertesiaClient,
175
+ audioFile: string,
176
+ renditionName: string,
177
+ fileName: string,
178
+ mimeType: string,
179
+ etag: string,
180
+ ): Promise<Rendition> {
181
+ const storagePath = `renditions/${etag}/audio/${fileName}`;
182
+ const uri = await uploadFile(client, audioFile, mimeType, fileName, storagePath);
183
+
184
+ return {
185
+ name: renditionName,
186
+ content: {
187
+ source: uri,
188
+ type: mimeType,
189
+ name: fileName,
190
+ },
191
+ };
192
+ }
193
+
194
+ /**
195
+ * Main activity: Prepare audio by extracting metadata and generating web rendition
196
+ */
197
+ export async function prepareAudio(
198
+ payload: DSLActivityExecutionPayload<PrepareAudioParams>,
199
+ ): Promise<PrepareAudioResult> {
200
+ const {
201
+ client,
202
+ objectId,
203
+ params,
204
+ } = await setupActivity<PrepareAudioParams>(payload);
205
+
206
+ const audioBitrate = params.audioBitrate ?? DEFAULT_AUDIO_BITRATE;
207
+
208
+ log.info(`Preparing audio for ${objectId}`, { audioBitrate });
209
+
210
+ // Retrieve the content object
211
+ const inputObject = await client.objects.retrieve(objectId).catch((err: unknown) => {
212
+ log.error(`Failed to retrieve document ${objectId}`, { err });
213
+ if (err instanceof RequestError && err.status === 404) {
214
+ throw new DocumentNotFoundError(`Document ${objectId} not found`, [objectId]);
215
+ }
216
+ throw err;
217
+ });
218
+
219
+ if (!inputObject.content?.source) {
220
+ log.error(`Document ${objectId} has no source`);
221
+ throw new DocumentNotFoundError(`Document ${objectId} has no source`, [objectId]);
222
+ }
223
+
224
+ if (!inputObject.content.type || !inputObject.content.type.startsWith('audio/')) {
225
+ log.error(`Document ${objectId} is not an audio file: ${inputObject.content.type}`);
226
+ throw new InvalidContentTypeError(
227
+ objectId,
228
+ 'audio/*',
229
+ inputObject.content.type || 'unknown',
230
+ );
231
+ }
232
+
233
+ // Download audio to temp file
234
+ const audioFile = await saveBlobToTempFile(client, inputObject.content.source);
235
+ const tempOutputDir = fs.mkdtempSync(path.join(os.tmpdir(), 'prepare-audio-'));
236
+
237
+ try {
238
+ // Step 1: Extract audio metadata
239
+ log.info('Extracting audio metadata');
240
+ const metadata = await getAudioMetadata(audioFile);
241
+
242
+ // Step 2: Generate web audio rendition (AAC M4A)
243
+ log.info('Generating web audio rendition');
244
+ const renditionFile = await generateAudioRendition(
245
+ audioFile,
246
+ tempOutputDir,
247
+ audioBitrate,
248
+ );
249
+
250
+ // Step 3: Upload generated rendition
251
+ const renditions: Rendition[] = [];
252
+ const etag = inputObject.content.etag ?? inputObject.id;
253
+
254
+ if (renditionFile) {
255
+ const audioRendition = await uploadAudioAsRendition(
256
+ client,
257
+ renditionFile,
258
+ AUDIO_RENDITION_NAME,
259
+ 'audio.m4a',
260
+ 'audio/mp4',
261
+ etag,
262
+ );
263
+ renditions.push(audioRendition);
264
+ }
265
+
266
+ // Step 4: Update content object with metadata and renditions
267
+ const audioMetadata: AudioMetadata = {
268
+ type: ContentNature.Audio,
269
+ duration: metadata.duration,
270
+ renditions,
271
+ generation_runs: inputObject.metadata?.generation_runs || [],
272
+ };
273
+
274
+ await client.objects.update(objectId, {
275
+ metadata: audioMetadata,
276
+ });
277
+
278
+ log.info(`Successfully prepared audio ${objectId}`, {
279
+ duration: metadata.duration,
280
+ codec: metadata.codec,
281
+ bitrate: metadata.bitrate,
282
+ sampleRate: metadata.sampleRate,
283
+ channels: metadata.channels,
284
+ renditionsGenerated: renditions.length,
285
+ });
286
+
287
+ return {
288
+ objectId,
289
+ metadata: {
290
+ duration: metadata.duration,
291
+ codec: metadata.codec,
292
+ bitrate: metadata.bitrate,
293
+ sampleRate: metadata.sampleRate,
294
+ channels: metadata.channels,
295
+ },
296
+ renditions: renditions,
297
+ status: 'success',
298
+ };
299
+ } catch (error) {
300
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
301
+ log.error(`Error preparing audio: ${errorMessage}`, { error });
302
+
303
+ // Re-throw known errors as-is
304
+ if (error instanceof DocumentNotFoundError || error instanceof InvalidContentTypeError) {
305
+ throw error;
306
+ }
307
+
308
+ // Wrap unknown errors in Error
309
+ throw new Error(
310
+ `Failed to prepare audio ${objectId}: ${errorMessage}`,
311
+ );
312
+ } finally {
313
+ // Clean up temporary files
314
+ const cleanupPromises: Promise<void>[] = [];
315
+
316
+ if (audioFile) {
317
+ cleanupPromises.push(
318
+ fs.promises.unlink(audioFile).catch((err) => {
319
+ log.warn(`Failed to cleanup audio file: ${audioFile}`, { err });
320
+ }),
321
+ );
322
+ }
323
+
324
+ if (tempOutputDir) {
325
+ cleanupPromises.push(
326
+ fs.promises.rm(tempOutputDir, { recursive: true, force: true }).catch((err) => {
327
+ log.warn(`Failed to cleanup temp directory: ${tempOutputDir}`, { err });
328
+ }),
329
+ );
330
+ }
331
+
332
+ await Promise.allSettled(cleanupPromises);
333
+ }
334
+ }
@@ -0,0 +1,189 @@
1
+ import { log } from "@temporalio/activity";
2
+ import { NodeStreamSource } from "@vertesia/client/node";
3
+ import { DSLActivityExecutionPayload, DSLActivitySpec } from "@vertesia/common";
4
+ import { Readable } from "stream";
5
+ import { setupActivity } from "../dsl/setup/ActivityContext.js";
6
+
7
+ /**
8
+ * Directories to merge from child to parent.
9
+ * Only out/ and files/ are merged to avoid overwriting parent's scripts/skills.
10
+ */
11
+ const MERGE_DIRECTORIES = ['out', 'files'];
12
+
13
+ /**
14
+ * Files that should never be merged.
15
+ */
16
+ const EXCLUDED_FILES = ['conversation.json', 'tools.json'];
17
+
18
+ export interface MergeChildArtifactsParams {
19
+ child_run_id: string;
20
+ parent_run_id: string;
21
+ directories?: string[]; // defaults to MERGE_DIRECTORIES
22
+ }
23
+
24
+ export interface MergeChildArtifacts extends DSLActivitySpec<MergeChildArtifactsParams> {
25
+ name: 'mergeChildArtifacts';
26
+ projection?: never;
27
+ }
28
+
29
+ /**
30
+ * Merge artifacts from child workflow's agent space to parent workflow's agent space.
31
+ *
32
+ * Files are namespaced by child run ID to avoid conflicts:
33
+ * - Child's `files/output.json` → Parent's `files/{childRunId}/output.json`
34
+ * - Child's `out/report.pdf` → Parent's `out/{childRunId}/report.pdf`
35
+ *
36
+ * Returns the list of merged paths in the parent's space for the model to access.
37
+ */
38
+ export async function mergeChildArtifacts(
39
+ payload: DSLActivityExecutionPayload<MergeChildArtifactsParams>
40
+ ): Promise<{ merged: number; files: string[] }> {
41
+ const { client, params } = await setupActivity<MergeChildArtifactsParams>(payload);
42
+ const childRunId = params.child_run_id;
43
+ const parentRunId = params.parent_run_id;
44
+ const directories = params.directories || MERGE_DIRECTORIES;
45
+
46
+ log.info(`Merging artifacts from child ${childRunId} to parent ${parentRunId}`, { directories });
47
+
48
+ // List all files in child's agent space
49
+ const childFiles = await client.files.listArtifacts(childRunId);
50
+
51
+ if (childFiles.length === 0) {
52
+ log.info("No artifacts in child agent space");
53
+ return { merged: 0, files: [] };
54
+ }
55
+
56
+ const mergedFiles: string[] = [];
57
+
58
+ for (const fullPath of childFiles) {
59
+ const relativePath = extractRelativePath(fullPath, childRunId);
60
+ if (!relativePath) continue;
61
+
62
+ // Only merge specified directories
63
+ const dir = relativePath.split('/')[0];
64
+ if (!directories.includes(dir)) continue;
65
+
66
+ // Skip excluded files
67
+ const fileName = relativePath.split('/').pop() || '';
68
+ if (EXCLUDED_FILES.includes(fileName)) continue;
69
+
70
+ try {
71
+ // Create namespaced path: files/output.json -> files/{childRunId}/output.json
72
+ const namespacedPath = createNamespacedPath(relativePath, childRunId);
73
+ await copyArtifact(client, childRunId, parentRunId, relativePath, namespacedPath);
74
+ mergedFiles.push(namespacedPath);
75
+ } catch (err: any) {
76
+ log.warn(`Failed to merge ${relativePath}: ${err.message}`);
77
+ }
78
+ }
79
+
80
+ log.info(`Merged ${mergedFiles.length} artifacts from child to parent`, { files: mergedFiles });
81
+ return { merged: mergedFiles.length, files: mergedFiles };
82
+ }
83
+
84
+ /**
85
+ * Create a namespaced path by inserting the child run ID after the directory.
86
+ * files/output.json -> files/{childRunId}/output.json
87
+ * out/subdir/report.pdf -> out/{childRunId}/subdir/report.pdf
88
+ */
89
+ function createNamespacedPath(relativePath: string, childRunId: string): string {
90
+ const parts = relativePath.split('/');
91
+ if (parts.length < 2) {
92
+ // Single file at root (shouldn't happen, but handle it)
93
+ return `${childRunId}/${relativePath}`;
94
+ }
95
+ // Insert childRunId after the first directory
96
+ const dir = parts[0];
97
+ const rest = parts.slice(1).join('/');
98
+ return `${dir}/${childRunId}/${rest}`;
99
+ }
100
+
101
+ /**
102
+ * Extract relative path from full artifact storage path.
103
+ * Storage paths can be: "store_xxx/agents/{runId}/..." or "agents/{runId}/..."
104
+ */
105
+ function extractRelativePath(fullPath: string, runId: string): string | null {
106
+ // Look for the pattern: agents/{runId}/
107
+ const marker = `/agents/${runId}/`;
108
+ const idx = fullPath.lastIndexOf(marker);
109
+ if (idx >= 0) {
110
+ return fullPath.slice(idx + marker.length);
111
+ }
112
+
113
+ // Also try without leading slash
114
+ const legacyPrefix = `agents/${runId}/`;
115
+ if (fullPath.startsWith(legacyPrefix)) {
116
+ return fullPath.slice(legacyPrefix.length);
117
+ }
118
+
119
+ // If path contains the runId, try to extract after it
120
+ const runIdIdx = fullPath.indexOf(runId);
121
+ if (runIdIdx >= 0) {
122
+ const afterRunId = fullPath.slice(runIdIdx + runId.length);
123
+ if (afterRunId.startsWith('/')) {
124
+ return afterRunId.slice(1);
125
+ }
126
+ }
127
+
128
+ return null;
129
+ }
130
+
131
+ /**
132
+ * Copy a single artifact from child to parent agent space with a new path
133
+ */
134
+ async function copyArtifact(
135
+ client: any,
136
+ childRunId: string,
137
+ parentRunId: string,
138
+ sourcePath: string,
139
+ destPath: string
140
+ ): Promise<void> {
141
+ // Download from child's agent space
142
+ const stream = await client.files.downloadArtifact(childRunId, sourcePath);
143
+
144
+ // Convert web stream to node stream for upload
145
+ const nodeStream = Readable.fromWeb(stream as any);
146
+
147
+ // Determine mime type from extension
148
+ const mimeType = getMimeType(sourcePath);
149
+ const fileName = sourcePath.split('/').pop() || sourcePath;
150
+
151
+ // Upload to parent's agent space at the namespaced path
152
+ const source = new NodeStreamSource(
153
+ nodeStream,
154
+ fileName,
155
+ mimeType
156
+ );
157
+
158
+ await client.files.uploadArtifact(parentRunId, destPath, source);
159
+ }
160
+
161
+ /**
162
+ * Get mime type from file extension
163
+ */
164
+ function getMimeType(filePath: string): string {
165
+ const ext = filePath.split('.').pop()?.toLowerCase();
166
+ const mimeTypes: Record<string, string> = {
167
+ 'json': 'application/json',
168
+ 'txt': 'text/plain',
169
+ 'md': 'text/markdown',
170
+ 'html': 'text/html',
171
+ 'csv': 'text/csv',
172
+ 'png': 'image/png',
173
+ 'jpg': 'image/jpeg',
174
+ 'jpeg': 'image/jpeg',
175
+ 'gif': 'image/gif',
176
+ 'svg': 'image/svg+xml',
177
+ 'pdf': 'application/pdf',
178
+ 'xml': 'application/xml',
179
+ 'zip': 'application/zip',
180
+ 'js': 'application/javascript',
181
+ 'ts': 'application/typescript',
182
+ 'py': 'text/x-python',
183
+ 'sh': 'text/x-shellscript',
184
+ 'bash': 'text/x-shellscript',
185
+ 'yaml': 'text/yaml',
186
+ 'yml': 'text/yaml',
187
+ };
188
+ return mimeTypes[ext || ''] || 'application/octet-stream';
189
+ }
@@ -1,3 +1,4 @@
1
+ import { log } from "@temporalio/activity";
1
2
  import { ContentObjectStatus, DSLActivityExecutionPayload, DSLActivitySpec } from "@vertesia/common";
2
3
  import { setupActivity } from "../dsl/setup/ActivityContext.js";
3
4
 
@@ -18,8 +19,15 @@ export interface SetDocumentStatus extends DSLActivitySpec<SetDocumentStatusPara
18
19
  export async function setDocumentStatus(payload: DSLActivityExecutionPayload<SetDocumentStatusParams>) {
19
20
  const { client, params, objectId } = await setupActivity<SetDocumentStatusParams>(payload);
20
21
 
21
- const res = await client.objects.update(objectId, { status: params.status });
22
-
23
- return res.status;
24
-
22
+ try {
23
+ const res = await client.objects.update(objectId, { status: params.status });
24
+ return res.status;
25
+ } catch (err: any) {
26
+ // If document was deleted, nothing to update - log warning and continue
27
+ if (err.status === 404 || err.name === 'ZenoClientNotFoundError') {
28
+ log.warn(`Document ${objectId} not found - may have been deleted. Skipping status update to '${params.status}'`);
29
+ return undefined; // Signal that document wasn't found
30
+ }
31
+ throw err;
32
+ }
25
33
  }
@@ -153,6 +153,10 @@ async function handleError(originalError: any, basePayload: BaseActivityPayload,
153
153
  }
154
154
 
155
155
  async function startChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkflowExecutionPayload, vars: Vars, debug_mode?: boolean) {
156
+ if (step.condition && !vars.match(step.condition)) {
157
+ log.info("Child workflow skipped: condition not satisfied", { workflow: step.name, condition: step.condition });
158
+ return;
159
+ }
156
160
  const resolvedVars = vars.resolve();
157
161
  if (step.vars) {
158
162
  // copy user vars (from step definition) to the resolved vars, resolving any expressions
@@ -162,12 +166,13 @@ async function startChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkfl
162
166
  if (debug_mode) {
163
167
  log.debug(`Workflow vars before starting child workflow ${step.name}`, { vars: resolvedVars });
164
168
  }
169
+
165
170
  const handle = await startChild(step.name, {
166
171
  ...step.options,
167
172
  args: [{
168
173
  ...payload,
169
174
  workflow: step.spec,
170
- vars: resolvedVars
175
+ vars: resolvedVars,
171
176
  }],
172
177
  memo: {
173
178
  InitiatedBy: payload.initiated_by,
@@ -186,6 +191,10 @@ async function startChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkfl
186
191
  }
187
192
 
188
193
  async function executeChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWorkflowExecutionPayload, vars: Vars, debug_mode?: boolean) {
194
+ if (step.condition && !vars.match(step.condition)) {
195
+ log.info("Child workflow skipped: condition not satisfied", { workflow: step.name, condition: step.condition });
196
+ return;
197
+ }
189
198
  const resolvedVars = vars.resolve();
190
199
  if (step.vars) {
191
200
  // copy user vars (from step definition) to the resolved vars, resolving any expressions
@@ -195,6 +204,7 @@ async function executeChildWorkflow(step: DSLChildWorkflowStep, payload: DSLWork
195
204
  if (debug_mode) {
196
205
  log.debug(`Workflow vars before executing child workflow ${step.name}`, { vars: resolvedVars });
197
206
  }
207
+
198
208
  const result = await executeChild(step.name, {
199
209
  ...step.options,
200
210
  args: [{
package/src/errors.ts CHANGED
@@ -78,10 +78,25 @@ export class InvalidContentTypeError extends ApplicationFailure {
78
78
  }
79
79
  }
80
80
 
81
+ export class TokenExpiredError extends ApplicationFailure {
82
+ constructor(
83
+ public statusCode: number,
84
+ message?: string,
85
+ ) {
86
+ super(
87
+ message || "Token expired: Authentication required",
88
+ "TokenExpiredError",
89
+ true, // non-retryable
90
+ );
91
+ }
92
+ }
93
+
81
94
  export const WF_NON_RETRYABLE_ERRORS = [
82
95
  "DocumentNotFoundError",
83
96
  "ActivityParamInvalidError",
84
97
  "ActivityParamNotFoundError",
85
98
  "WorkflowParamNotFoundError",
86
99
  "InvalidContentTypeError",
100
+ "TokenExpiredError",
101
+ "ZenoClientNotFoundError",
87
102
  ];
package/src/index.ts CHANGED
@@ -26,6 +26,7 @@ export * from "./activities/rateLimiter.js";
26
26
  export * from "./activities/setDocumentStatus.js";
27
27
  export * from "./iterative-generation/activities/index.js";
28
28
  export * from "./activities/media/prepareVideo.js";
29
+ export * from "./activities/media/prepareAudio.js";
29
30
 
30
31
  export * from "./dsl/setup/ActivityContext.js";
31
32
  export * from "./errors.js";
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDocumentTypeFromInteractionRun = createDocumentTypeFromInteractionRun;
4
- const activity_1 = require("@temporalio/activity");
5
- const client_1 = require("@vertesia/client");
6
- const projections_js_1 = require("../../dsl/projections.js");
7
- const ActivityContext_js_1 = require("../../dsl/setup/ActivityContext.js");
8
- const errors_js_1 = require("../../errors.js");
9
- async function createDocumentTypeFromInteractionRun(payload) {
10
- const { params, client } = await (0, ActivityContext_js_1.setupActivity)(payload);
11
- if (!params.run) {
12
- throw new errors_js_1.ActivityParamNotFoundError("run", payload.activity);
13
- }
14
- const jsonResult = client_1.InteractionOutput.from(params.run.result).object();
15
- if (!jsonResult.document_type) {
16
- activity_1.log.error("No name generated for type: " + JSON.stringify(jsonResult), jsonResult);
17
- throw new Error("No name generated for type");
18
- }
19
- activity_1.log.info("Generated schema for type", jsonResult.metadata_schema);
20
- const typeData = {
21
- name: jsonResult.document_type,
22
- object_schema: jsonResult.metadata_schema,
23
- is_chunkable: !!jsonResult.is_chunkable,
24
- };
25
- const type = await client.types.create(typeData);
26
- if (params.updateObjectId) {
27
- await client.objects.update(params.updateObjectId, {
28
- type: type.id,
29
- });
30
- }
31
- return (0, projections_js_1.projectResult)(payload, params, type, { id: type.id, name: type.name });
32
- }
33
- //# sourceMappingURL=createDocumentTypeFromInteractionRun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createDocumentTypeFromInteractionRun.js","sourceRoot":"","sources":["../../../../src/activities/advanced/createDocumentTypeFromInteractionRun.ts"],"names":[],"mappings":";;AAwBA,oFA8BC;AAtDD,mDAA2C;AAC3C,6CAAqD;AAErD,6DAAyD;AACzD,2EAAmE;AACnE,+CAA6D;AAmBtD,KAAK,UAAU,oCAAoC,CAAC,OAAgF;IACvI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,kCAAa,EAA6C,OAAO,CAAC,CAAC;IAEpG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,sCAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,UAAU,GAAG,0BAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;IAEtE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC5B,cAAG,CAAC,KAAK,CAAC,8BAA8B,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IAED,cAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAmC;QAC7C,IAAI,EAAE,UAAU,CAAC,aAAa;QAC9B,aAAa,EAAE,UAAU,CAAC,eAAe;QACzC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY;KAC1C,CAAA;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,EAAE;SAChB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,IAAA,8BAAa,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAClF,CAAC"}