@vertesia/workflow 0.52.0 → 0.54.0

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 (379) hide show
  1. package/package.json +5 -4
  2. package/src/activities/createDocumentFromOther.ts +1 -1
  3. package/src/activities/executeInteraction.ts +66 -39
  4. package/src/activities/extractDocumentText.ts +67 -51
  5. package/src/activities/generateEmbeddings.ts +1 -1
  6. package/src/activities/generateImageRendition.ts +35 -14
  7. package/src/activities/generateOrAssignContentType.ts +52 -26
  8. package/src/activities/getObjectFromStore.ts +1 -1
  9. package/src/activities/handleError.ts +25 -0
  10. package/src/activities/index-dsl.ts +1 -0
  11. package/src/activities/index.ts +0 -1
  12. package/src/activities/media/processPdfWithTextract.ts +4 -4
  13. package/src/activities/media/transcribeMediaWithGladia.ts +1 -1
  14. package/src/activities/setDocumentStatus.ts +1 -1
  15. package/src/conversion/TextractProcessor.ts +9 -9
  16. package/src/conversion/image.ts +8 -2
  17. package/src/conversion/markitdown.ts +41 -0
  18. package/src/conversion/mutool.ts +1 -1
  19. package/src/conversion/pandoc.test.ts +2 -2
  20. package/src/conversion/pandoc.ts +38 -42
  21. package/src/dsl/dsl-workflow.ts +80 -12
  22. package/src/dsl/validation.test.ts +2 -2
  23. package/src/dsl/vars.test.ts +1 -1
  24. package/src/dsl/vars.ts +6 -6
  25. package/src/dsl/workflow-exec-child.test.ts +14 -4
  26. package/src/dsl/workflow-fetch.test.ts +1 -1
  27. package/src/dsl/workflow-import.test.ts +1 -1
  28. package/src/dsl/workflow.test.ts +12 -2
  29. package/src/index.ts +1 -1
  30. package/src/iterative-generation/activities/extractToc.ts +1 -1
  31. package/src/iterative-generation/activities/generatePart.ts +2 -2
  32. package/src/iterative-generation/activities/generateToc.ts +1 -1
  33. package/src/iterative-generation/iterativeGenerationWorkflow.ts +1 -1
  34. package/src/iterative-generation/types.ts +4 -4
  35. package/src/iterative-generation/utils.ts +4 -4
  36. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -32
  37. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  38. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -72
  39. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  40. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +0 -18
  41. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  42. package/lib/cjs/activities/chunkDocument.js +0 -84
  43. package/lib/cjs/activities/chunkDocument.js.map +0 -1
  44. package/lib/cjs/activities/createDocumentFromOther.js +0 -64
  45. package/lib/cjs/activities/createDocumentFromOther.js.map +0 -1
  46. package/lib/cjs/activities/executeInteraction.js +0 -140
  47. package/lib/cjs/activities/executeInteraction.js.map +0 -1
  48. package/lib/cjs/activities/extractDocumentText.js +0 -153
  49. package/lib/cjs/activities/extractDocumentText.js.map +0 -1
  50. package/lib/cjs/activities/generateDocumentProperties.js +0 -77
  51. package/lib/cjs/activities/generateDocumentProperties.js.map +0 -1
  52. package/lib/cjs/activities/generateEmbeddings.js +0 -248
  53. package/lib/cjs/activities/generateEmbeddings.js.map +0 -1
  54. package/lib/cjs/activities/generateImageRendition.js +0 -147
  55. package/lib/cjs/activities/generateImageRendition.js.map +0 -1
  56. package/lib/cjs/activities/generateOrAssignContentType.js +0 -99
  57. package/lib/cjs/activities/generateOrAssignContentType.js.map +0 -1
  58. package/lib/cjs/activities/getObjectFromStore.js +0 -20
  59. package/lib/cjs/activities/getObjectFromStore.js.map +0 -1
  60. package/lib/cjs/activities/index-dsl.js +0 -37
  61. package/lib/cjs/activities/index-dsl.js.map +0 -1
  62. package/lib/cjs/activities/index.js +0 -22
  63. package/lib/cjs/activities/index.js.map +0 -1
  64. package/lib/cjs/activities/media/processPdfWithTextract.js +0 -102
  65. package/lib/cjs/activities/media/processPdfWithTextract.js.map +0 -1
  66. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +0 -51
  67. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +0 -1
  68. package/lib/cjs/activities/notifyWebhook.js +0 -34
  69. package/lib/cjs/activities/notifyWebhook.js.map +0 -1
  70. package/lib/cjs/activities/setDocumentStatus.js +0 -15
  71. package/lib/cjs/activities/setDocumentStatus.js.map +0 -1
  72. package/lib/cjs/conversion/TextractProcessor.js +0 -417
  73. package/lib/cjs/conversion/TextractProcessor.js.map +0 -1
  74. package/lib/cjs/conversion/image.js +0 -90
  75. package/lib/cjs/conversion/image.js.map +0 -1
  76. package/lib/cjs/conversion/mutool.js +0 -147
  77. package/lib/cjs/conversion/mutool.js.map +0 -1
  78. package/lib/cjs/conversion/pandoc.js +0 -39
  79. package/lib/cjs/conversion/pandoc.js.map +0 -1
  80. package/lib/cjs/dsl/conditions.js +0 -81
  81. package/lib/cjs/dsl/conditions.js.map +0 -1
  82. package/lib/cjs/dsl/dsl-workflow.js +0 -223
  83. package/lib/cjs/dsl/dsl-workflow.js.map +0 -1
  84. package/lib/cjs/dsl/dslProxyActivities.js +0 -23
  85. package/lib/cjs/dsl/dslProxyActivities.js.map +0 -1
  86. package/lib/cjs/dsl/projections.js +0 -59
  87. package/lib/cjs/dsl/projections.js.map +0 -1
  88. package/lib/cjs/dsl/setup/ActivityContext.js +0 -120
  89. package/lib/cjs/dsl/setup/ActivityContext.js.map +0 -1
  90. package/lib/cjs/dsl/setup/fetch/DataProvider.js +0 -51
  91. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +0 -1
  92. package/lib/cjs/dsl/setup/fetch/index.js +0 -16
  93. package/lib/cjs/dsl/setup/fetch/index.js.map +0 -1
  94. package/lib/cjs/dsl/setup/fetch/providers.js +0 -67
  95. package/lib/cjs/dsl/setup/fetch/providers.js.map +0 -1
  96. package/lib/cjs/dsl/test/test-child-workflow.js +0 -10
  97. package/lib/cjs/dsl/test/test-child-workflow.js.map +0 -1
  98. package/lib/cjs/dsl/validation.js +0 -122
  99. package/lib/cjs/dsl/validation.js.map +0 -1
  100. package/lib/cjs/dsl/vars.js +0 -341
  101. package/lib/cjs/dsl/vars.js.map +0 -1
  102. package/lib/cjs/dsl/walk.js +0 -100
  103. package/lib/cjs/dsl/walk.js.map +0 -1
  104. package/lib/cjs/dsl.js +0 -20
  105. package/lib/cjs/dsl.js.map +0 -1
  106. package/lib/cjs/errors.js +0 -48
  107. package/lib/cjs/errors.js.map +0 -1
  108. package/lib/cjs/index.js +0 -50
  109. package/lib/cjs/index.js.map +0 -1
  110. package/lib/cjs/iterative-generation/activities/extractToc.js +0 -47
  111. package/lib/cjs/iterative-generation/activities/extractToc.js.map +0 -1
  112. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +0 -69
  113. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +0 -1
  114. package/lib/cjs/iterative-generation/activities/generatePart.js +0 -73
  115. package/lib/cjs/iterative-generation/activities/generatePart.js.map +0 -1
  116. package/lib/cjs/iterative-generation/activities/generateToc.js +0 -91
  117. package/lib/cjs/iterative-generation/activities/generateToc.js.map +0 -1
  118. package/lib/cjs/iterative-generation/activities/index.js +0 -12
  119. package/lib/cjs/iterative-generation/activities/index.js.map +0 -1
  120. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +0 -56
  121. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  122. package/lib/cjs/iterative-generation/types.js +0 -5
  123. package/lib/cjs/iterative-generation/types.js.map +0 -1
  124. package/lib/cjs/iterative-generation/utils.js +0 -121
  125. package/lib/cjs/iterative-generation/utils.js.map +0 -1
  126. package/lib/cjs/package.json +0 -3
  127. package/lib/cjs/result-types.js +0 -10
  128. package/lib/cjs/result-types.js.map +0 -1
  129. package/lib/cjs/system/notifyWebhookWorkflow.js +0 -47
  130. package/lib/cjs/system/notifyWebhookWorkflow.js.map +0 -1
  131. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +0 -28
  132. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  133. package/lib/cjs/utils/auth.js +0 -15
  134. package/lib/cjs/utils/auth.js.map +0 -1
  135. package/lib/cjs/utils/blobs.js +0 -69
  136. package/lib/cjs/utils/blobs.js.map +0 -1
  137. package/lib/cjs/utils/chunks.js +0 -14
  138. package/lib/cjs/utils/chunks.js.map +0 -1
  139. package/lib/cjs/utils/client.js +0 -26
  140. package/lib/cjs/utils/client.js.map +0 -1
  141. package/lib/cjs/utils/expand-vars.js +0 -33
  142. package/lib/cjs/utils/expand-vars.js.map +0 -1
  143. package/lib/cjs/utils/memory.js +0 -65
  144. package/lib/cjs/utils/memory.js.map +0 -1
  145. package/lib/cjs/utils/tokens.js +0 -38
  146. package/lib/cjs/utils/tokens.js.map +0 -1
  147. package/lib/cjs/vars.js +0 -20
  148. package/lib/cjs/vars.js.map +0 -1
  149. package/lib/cjs/workflows.js +0 -15
  150. package/lib/cjs/workflows.js.map +0 -1
  151. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -29
  152. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  153. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -69
  154. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  155. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +0 -15
  156. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  157. package/lib/esm/activities/chunkDocument.js +0 -81
  158. package/lib/esm/activities/chunkDocument.js.map +0 -1
  159. package/lib/esm/activities/createDocumentFromOther.js +0 -58
  160. package/lib/esm/activities/createDocumentFromOther.js.map +0 -1
  161. package/lib/esm/activities/executeInteraction.js +0 -136
  162. package/lib/esm/activities/executeInteraction.js.map +0 -1
  163. package/lib/esm/activities/extractDocumentText.js +0 -150
  164. package/lib/esm/activities/extractDocumentText.js.map +0 -1
  165. package/lib/esm/activities/generateDocumentProperties.js +0 -74
  166. package/lib/esm/activities/generateDocumentProperties.js.map +0 -1
  167. package/lib/esm/activities/generateEmbeddings.js +0 -245
  168. package/lib/esm/activities/generateEmbeddings.js.map +0 -1
  169. package/lib/esm/activities/generateImageRendition.js +0 -141
  170. package/lib/esm/activities/generateImageRendition.js.map +0 -1
  171. package/lib/esm/activities/generateOrAssignContentType.js +0 -96
  172. package/lib/esm/activities/generateOrAssignContentType.js.map +0 -1
  173. package/lib/esm/activities/getObjectFromStore.js +0 -17
  174. package/lib/esm/activities/getObjectFromStore.js.map +0 -1
  175. package/lib/esm/activities/index-dsl.js +0 -18
  176. package/lib/esm/activities/index-dsl.js.map +0 -1
  177. package/lib/esm/activities/index.js +0 -6
  178. package/lib/esm/activities/index.js.map +0 -1
  179. package/lib/esm/activities/media/processPdfWithTextract.js +0 -98
  180. package/lib/esm/activities/media/processPdfWithTextract.js.map +0 -1
  181. package/lib/esm/activities/media/transcribeMediaWithGladia.js +0 -48
  182. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +0 -1
  183. package/lib/esm/activities/notifyWebhook.js +0 -31
  184. package/lib/esm/activities/notifyWebhook.js.map +0 -1
  185. package/lib/esm/activities/setDocumentStatus.js +0 -12
  186. package/lib/esm/activities/setDocumentStatus.js.map +0 -1
  187. package/lib/esm/conversion/TextractProcessor.js +0 -410
  188. package/lib/esm/conversion/TextractProcessor.js.map +0 -1
  189. package/lib/esm/conversion/image.js +0 -84
  190. package/lib/esm/conversion/image.js.map +0 -1
  191. package/lib/esm/conversion/mutool.js +0 -139
  192. package/lib/esm/conversion/mutool.js.map +0 -1
  193. package/lib/esm/conversion/pandoc.js +0 -36
  194. package/lib/esm/conversion/pandoc.js.map +0 -1
  195. package/lib/esm/dsl/conditions.js +0 -75
  196. package/lib/esm/dsl/conditions.js.map +0 -1
  197. package/lib/esm/dsl/dsl-workflow.js +0 -216
  198. package/lib/esm/dsl/dsl-workflow.js.map +0 -1
  199. package/lib/esm/dsl/dslProxyActivities.js +0 -20
  200. package/lib/esm/dsl/dslProxyActivities.js.map +0 -1
  201. package/lib/esm/dsl/projections.js +0 -55
  202. package/lib/esm/dsl/projections.js.map +0 -1
  203. package/lib/esm/dsl/setup/ActivityContext.js +0 -115
  204. package/lib/esm/dsl/setup/ActivityContext.js.map +0 -1
  205. package/lib/esm/dsl/setup/fetch/DataProvider.js +0 -47
  206. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +0 -1
  207. package/lib/esm/dsl/setup/fetch/index.js +0 -12
  208. package/lib/esm/dsl/setup/fetch/index.js.map +0 -1
  209. package/lib/esm/dsl/setup/fetch/providers.js +0 -61
  210. package/lib/esm/dsl/setup/fetch/providers.js.map +0 -1
  211. package/lib/esm/dsl/test/test-child-workflow.js +0 -5
  212. package/lib/esm/dsl/test/test-child-workflow.js.map +0 -1
  213. package/lib/esm/dsl/validation.js +0 -118
  214. package/lib/esm/dsl/validation.js.map +0 -1
  215. package/lib/esm/dsl/vars.js +0 -335
  216. package/lib/esm/dsl/vars.js.map +0 -1
  217. package/lib/esm/dsl/walk.js +0 -96
  218. package/lib/esm/dsl/walk.js.map +0 -1
  219. package/lib/esm/dsl.js +0 -4
  220. package/lib/esm/dsl.js.map +0 -1
  221. package/lib/esm/errors.js +0 -41
  222. package/lib/esm/errors.js.map +0 -1
  223. package/lib/esm/index.js +0 -32
  224. package/lib/esm/index.js.map +0 -1
  225. package/lib/esm/iterative-generation/activities/extractToc.js +0 -44
  226. package/lib/esm/iterative-generation/activities/extractToc.js.map +0 -1
  227. package/lib/esm/iterative-generation/activities/finalizeOutput.js +0 -66
  228. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +0 -1
  229. package/lib/esm/iterative-generation/activities/generatePart.js +0 -70
  230. package/lib/esm/iterative-generation/activities/generatePart.js.map +0 -1
  231. package/lib/esm/iterative-generation/activities/generateToc.js +0 -88
  232. package/lib/esm/iterative-generation/activities/generateToc.js.map +0 -1
  233. package/lib/esm/iterative-generation/activities/index.js +0 -5
  234. package/lib/esm/iterative-generation/activities/index.js.map +0 -1
  235. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +0 -53
  236. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  237. package/lib/esm/iterative-generation/types.js +0 -2
  238. package/lib/esm/iterative-generation/types.js.map +0 -1
  239. package/lib/esm/iterative-generation/utils.js +0 -112
  240. package/lib/esm/iterative-generation/utils.js.map +0 -1
  241. package/lib/esm/result-types.js +0 -7
  242. package/lib/esm/result-types.js.map +0 -1
  243. package/lib/esm/system/notifyWebhookWorkflow.js +0 -44
  244. package/lib/esm/system/notifyWebhookWorkflow.js.map +0 -1
  245. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +0 -25
  246. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  247. package/lib/esm/utils/auth.js +0 -8
  248. package/lib/esm/utils/auth.js.map +0 -1
  249. package/lib/esm/utils/blobs.js +0 -58
  250. package/lib/esm/utils/blobs.js.map +0 -1
  251. package/lib/esm/utils/chunks.js +0 -9
  252. package/lib/esm/utils/chunks.js.map +0 -1
  253. package/lib/esm/utils/client.js +0 -23
  254. package/lib/esm/utils/client.js.map +0 -1
  255. package/lib/esm/utils/expand-vars.js +0 -30
  256. package/lib/esm/utils/expand-vars.js.map +0 -1
  257. package/lib/esm/utils/memory.js +0 -55
  258. package/lib/esm/utils/memory.js.map +0 -1
  259. package/lib/esm/utils/tokens.js +0 -34
  260. package/lib/esm/utils/tokens.js.map +0 -1
  261. package/lib/esm/vars.js +0 -4
  262. package/lib/esm/vars.js.map +0 -1
  263. package/lib/esm/workflows.js +0 -8
  264. package/lib/esm/workflows.js.map +0 -1
  265. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +0 -17
  266. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +0 -1
  267. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +0 -39
  268. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +0 -1
  269. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +0 -19
  270. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +0 -1
  271. package/lib/types/activities/chunkDocument.d.ts +0 -33
  272. package/lib/types/activities/chunkDocument.d.ts.map +0 -1
  273. package/lib/types/activities/createDocumentFromOther.d.ts +0 -21
  274. package/lib/types/activities/createDocumentFromOther.d.ts.map +0 -1
  275. package/lib/types/activities/executeInteraction.d.ts +0 -55
  276. package/lib/types/activities/executeInteraction.d.ts.map +0 -1
  277. package/lib/types/activities/extractDocumentText.d.ts +0 -10
  278. package/lib/types/activities/extractDocumentText.d.ts.map +0 -1
  279. package/lib/types/activities/generateDocumentProperties.d.ts +0 -32
  280. package/lib/types/activities/generateDocumentProperties.d.ts.map +0 -1
  281. package/lib/types/activities/generateEmbeddings.d.ts +0 -53
  282. package/lib/types/activities/generateEmbeddings.d.ts.map +0 -1
  283. package/lib/types/activities/generateImageRendition.d.ts +0 -15
  284. package/lib/types/activities/generateImageRendition.d.ts.map +0 -1
  285. package/lib/types/activities/generateOrAssignContentType.d.ts +0 -44
  286. package/lib/types/activities/generateOrAssignContentType.d.ts.map +0 -1
  287. package/lib/types/activities/getObjectFromStore.d.ts +0 -14
  288. package/lib/types/activities/getObjectFromStore.d.ts.map +0 -1
  289. package/lib/types/activities/index-dsl.d.ts +0 -17
  290. package/lib/types/activities/index-dsl.d.ts.map +0 -1
  291. package/lib/types/activities/index.d.ts +0 -6
  292. package/lib/types/activities/index.d.ts.map +0 -1
  293. package/lib/types/activities/media/processPdfWithTextract.d.ts +0 -26
  294. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +0 -1
  295. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +0 -14
  296. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +0 -1
  297. package/lib/types/activities/notifyWebhook.d.ts +0 -16
  298. package/lib/types/activities/notifyWebhook.d.ts.map +0 -1
  299. package/lib/types/activities/setDocumentStatus.d.ts +0 -15
  300. package/lib/types/activities/setDocumentStatus.d.ts.map +0 -1
  301. package/lib/types/conversion/TextractProcessor.d.ts +0 -45
  302. package/lib/types/conversion/TextractProcessor.d.ts.map +0 -1
  303. package/lib/types/conversion/image.d.ts +0 -11
  304. package/lib/types/conversion/image.d.ts.map +0 -1
  305. package/lib/types/conversion/mutool.d.ts +0 -19
  306. package/lib/types/conversion/mutool.d.ts.map +0 -1
  307. package/lib/types/conversion/pandoc.d.ts +0 -2
  308. package/lib/types/conversion/pandoc.d.ts.map +0 -1
  309. package/lib/types/dsl/conditions.d.ts +0 -2
  310. package/lib/types/dsl/conditions.d.ts.map +0 -1
  311. package/lib/types/dsl/dsl-workflow.d.ts +0 -5
  312. package/lib/types/dsl/dsl-workflow.d.ts.map +0 -1
  313. package/lib/types/dsl/dslProxyActivities.d.ts +0 -10
  314. package/lib/types/dsl/dslProxyActivities.d.ts.map +0 -1
  315. package/lib/types/dsl/projections.d.ts +0 -4
  316. package/lib/types/dsl/projections.d.ts.map +0 -1
  317. package/lib/types/dsl/setup/ActivityContext.d.ts +0 -17
  318. package/lib/types/dsl/setup/ActivityContext.d.ts.map +0 -1
  319. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +0 -9
  320. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +0 -1
  321. package/lib/types/dsl/setup/fetch/index.d.ts +0 -6
  322. package/lib/types/dsl/setup/fetch/index.d.ts.map +0 -1
  323. package/lib/types/dsl/setup/fetch/providers.d.ts +0 -25
  324. package/lib/types/dsl/setup/fetch/providers.d.ts.map +0 -1
  325. package/lib/types/dsl/test/test-child-workflow.d.ts +0 -4
  326. package/lib/types/dsl/test/test-child-workflow.d.ts.map +0 -1
  327. package/lib/types/dsl/validation.d.ts +0 -4
  328. package/lib/types/dsl/validation.d.ts.map +0 -1
  329. package/lib/types/dsl/vars.d.ts +0 -48
  330. package/lib/types/dsl/vars.d.ts.map +0 -1
  331. package/lib/types/dsl/walk.d.ts +0 -18
  332. package/lib/types/dsl/walk.d.ts.map +0 -1
  333. package/lib/types/dsl.d.ts +0 -4
  334. package/lib/types/dsl.d.ts.map +0 -1
  335. package/lib/types/errors.d.ts +0 -22
  336. package/lib/types/errors.d.ts.map +0 -1
  337. package/lib/types/index.d.ts +0 -31
  338. package/lib/types/index.d.ts.map +0 -1
  339. package/lib/types/iterative-generation/activities/extractToc.d.ts +0 -10
  340. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +0 -1
  341. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +0 -3
  342. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +0 -1
  343. package/lib/types/iterative-generation/activities/generatePart.d.ts +0 -3
  344. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +0 -1
  345. package/lib/types/iterative-generation/activities/generateToc.d.ts +0 -4
  346. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +0 -1
  347. package/lib/types/iterative-generation/activities/index.d.ts +0 -5
  348. package/lib/types/iterative-generation/activities/index.d.ts.map +0 -1
  349. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +0 -3
  350. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +0 -1
  351. package/lib/types/iterative-generation/types.d.ts +0 -79
  352. package/lib/types/iterative-generation/types.d.ts.map +0 -1
  353. package/lib/types/iterative-generation/utils.d.ts +0 -27
  354. package/lib/types/iterative-generation/utils.d.ts.map +0 -1
  355. package/lib/types/result-types.d.ts +0 -22
  356. package/lib/types/result-types.d.ts.map +0 -1
  357. package/lib/types/system/notifyWebhookWorkflow.d.ts +0 -3
  358. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +0 -1
  359. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +0 -25
  360. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +0 -1
  361. package/lib/types/utils/auth.d.ts +0 -4
  362. package/lib/types/utils/auth.d.ts.map +0 -1
  363. package/lib/types/utils/blobs.d.ts +0 -8
  364. package/lib/types/utils/blobs.d.ts.map +0 -1
  365. package/lib/types/utils/chunks.d.ts +0 -9
  366. package/lib/types/utils/chunks.d.ts.map +0 -1
  367. package/lib/types/utils/client.d.ts +0 -7
  368. package/lib/types/utils/client.d.ts.map +0 -1
  369. package/lib/types/utils/expand-vars.d.ts +0 -8
  370. package/lib/types/utils/expand-vars.d.ts.map +0 -1
  371. package/lib/types/utils/memory.d.ts +0 -8
  372. package/lib/types/utils/memory.d.ts.map +0 -1
  373. package/lib/types/utils/tokens.d.ts +0 -11
  374. package/lib/types/utils/tokens.d.ts.map +0 -1
  375. package/lib/types/vars.d.ts +0 -3
  376. package/lib/types/vars.d.ts.map +0 -1
  377. package/lib/types/workflows.d.ts +0 -8
  378. package/lib/types/workflows.d.ts.map +0 -1
  379. package/lib/workflows-bundle.js +0 -20689
@@ -1,141 +0,0 @@
1
- import { log } from "@temporalio/activity";
2
- import { NodeStreamSource } from "@vertesia/client/node";
3
- import fs from 'fs';
4
- import ffmpeg from 'fluent-ffmpeg';
5
- import path from 'path';
6
- import os from 'os';
7
- import { imageResizer } from "../conversion/image.js";
8
- import { setupActivity } from "../dsl/setup/ActivityContext.js";
9
- import { NoDocumentFound, WorkflowParamNotFound } from "../errors.js";
10
- import { saveBlobToTempFile } from "../utils/blobs.js";
11
- export async function generateImageRendition(payload) {
12
- const { client, objectId, params } = await setupActivity(payload);
13
- const inputObject = await client.objects.retrieve(objectId).catch((err) => {
14
- log.error(`Failed to retrieve document ${objectId}`, err);
15
- if (err.response?.status === 404) {
16
- throw new NoDocumentFound(`Document ${objectId} not found`, [objectId]);
17
- }
18
- throw err;
19
- });
20
- const renditionType = await client.types.getTypeByName("Rendition");
21
- if (!params.format) {
22
- log.error(`Format not found`);
23
- throw new WorkflowParamNotFound(`format`);
24
- }
25
- if (!renditionType) {
26
- log.error(`Rendition type not found`);
27
- throw new NoDocumentFound(`Rendition type not found`, [objectId]);
28
- }
29
- if (!inputObject.content?.source) {
30
- log.error(`Document ${objectId} has no source`);
31
- throw new NoDocumentFound(`Document ${objectId} has no source`, [objectId]);
32
- }
33
- if (!inputObject.content.type || (!inputObject.content.type?.startsWith("image/") && !inputObject.content.type?.startsWith("video/"))) {
34
- log.error(`Document ${objectId} is not an image or a video: ${inputObject.content.type}`);
35
- throw new NoDocumentFound(`Document ${objectId} is not an image or a video: ${inputObject.content.type}`, [objectId]);
36
- }
37
- //array of rendition files to upload
38
- let renditionPages = [];
39
- if (inputObject.content.type.startsWith('image/')) {
40
- const imageFile = await saveBlobToTempFile(client, inputObject.content.source);
41
- log.info(`Image ${objectId} copied to ${imageFile}`);
42
- renditionPages.push(imageFile);
43
- }
44
- else if (inputObject.content.type.startsWith('video/')) {
45
- const videoFile = await saveBlobToTempFile(client, inputObject.content.source);
46
- const tempOutputDir = fs.mkdtempSync(path.join(os.tmpdir(), 'video-rendition-'));
47
- const thumbnailPath = path.join(tempOutputDir, 'thumbnail.png');
48
- try {
49
- // Extract a frame at 10% of the video duration
50
- await new Promise((resolve, reject) => {
51
- ffmpeg.ffprobe(videoFile, (err, metadata) => {
52
- if (err) {
53
- log.error(`Failed to probe video metadata: ${err.message}`);
54
- return reject(err);
55
- }
56
- const duration = metadata.format.duration || 0;
57
- const timestamp = Math.max(0.1 * duration, 1);
58
- ffmpeg(videoFile)
59
- .screenshots({
60
- timestamps: [timestamp],
61
- filename: 'thumbnail.png',
62
- folder: tempOutputDir,
63
- size: `${params.max_hw}x?`
64
- })
65
- .on('end', () => {
66
- log.info(`Video frame extraction complete for ${objectId}`);
67
- resolve();
68
- })
69
- .on('error', (err) => {
70
- log.error(`Error extracting frame from video: ${err.message}`);
71
- reject(err);
72
- });
73
- });
74
- });
75
- if (fs.existsSync(thumbnailPath)) {
76
- renditionPages.push(thumbnailPath);
77
- }
78
- else {
79
- throw new Error(`Failed to generate thumbnail for video ${objectId}`);
80
- }
81
- }
82
- catch (error) {
83
- log.error(`Error generating image rendition for video: ${error instanceof Error ? error.message : 'Unknown error'}`);
84
- throw new Error(`Failed to generate image rendition for video: ${objectId}`);
85
- }
86
- }
87
- //generate rendition name, pass an index for multi parts
88
- const getRenditionName = (index = 0) => {
89
- const name = `renditions/${objectId}/${params.max_hw}/${index}.${params.format}`;
90
- return name;
91
- };
92
- if (!renditionPages || !renditionPages.length) {
93
- log.error(`Failed to generate rendition for ${objectId}`);
94
- throw new Error(`Failed to generate rendition for ${objectId}`);
95
- }
96
- log.info(`Uploading rendition for ${objectId} with ${renditionPages.length} pages (max_hw: ${params.max_hw}, format: ${params.format})`, { renditionPages });
97
- const uploads = renditionPages.map(async (page, i) => {
98
- const pageId = getRenditionName(i);
99
- let resizedImagePath = null;
100
- try {
101
- // Resize the image using ImageMagick
102
- resizedImagePath = await imageResizer(page, params.max_hw, params.format);
103
- // Create a read stream from the resized image file
104
- const fileStream = fs.createReadStream(resizedImagePath);
105
- const source = new NodeStreamSource(fileStream, pageId.split("/").pop() ?? "0." + params.format, "image/" + params.format, pageId);
106
- log.info(`Uploading rendition for ${objectId} page ${i} with max_hw: ${params.max_hw} and format: ${params.format}`);
107
- const result = await client.objects.upload(source).catch((err) => {
108
- log.error(`Failed to upload rendition for ${objectId} page ${i}`, { error: err });
109
- return Promise.resolve(null);
110
- });
111
- return result;
112
- }
113
- catch (error) {
114
- log.error(`Failed to process rendition for ${objectId} page ${i}`, { error });
115
- return Promise.resolve(null);
116
- }
117
- });
118
- const uploaded = await Promise.all(uploads);
119
- if (!uploaded || !uploaded.length || !uploaded[0]) {
120
- log.error(`Failed to upload rendition for ${objectId}`);
121
- throw new Error(`Failed to upload rendition for ${objectId} - upload object is empty`);
122
- }
123
- log.info(`Creating rendition for ${objectId} with max_hw: ${params.max_hw} and format: ${params.format}`, {
124
- uploaded,
125
- });
126
- const rendition = await client.objects.create({
127
- name: inputObject.name + ` [Rendition ${params.max_hw}]`,
128
- type: renditionType.id,
129
- parent: inputObject.id,
130
- content: uploaded[0],
131
- properties: {
132
- mime_type: "image/" + params.format,
133
- source_etag: inputObject.content.source,
134
- height: params.max_hw,
135
- width: params.max_hw,
136
- },
137
- });
138
- log.info(`Rendition ${rendition.id} created for ${objectId}`, { rendition });
139
- return { id: rendition.id, format: params.format, status: "success" };
140
- }
141
- //# sourceMappingURL=generateImageRendition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateImageRendition.js","sourceRoot":"","sources":["../../../src/activities/generateImageRendition.ts"],"names":[],"mappings":"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"}
@@ -1,96 +0,0 @@
1
- import { log } from "@temporalio/activity";
2
- import { setupActivity } from "../dsl/setup/ActivityContext.js";
3
- import { truncByMaxTokens } from "../utils/tokens.js";
4
- import { executeInteractionFromActivity } from "./executeInteraction.js";
5
- const INT_SELECT_DOCUMENT_TYPE = "sys:SelectDocumentType";
6
- const INT_GENERATE_METADATA_MODEL = "sys:GenerateMetadataModel";
7
- export async function generateOrAssignContentType(payload) {
8
- const context = await setupActivity(payload);
9
- const { params, client, objectId } = context;
10
- const interactionName = params.interactionNames?.selectDocumentType ?? INT_SELECT_DOCUMENT_TYPE;
11
- log.info("SelectDocumentType for object: " + objectId, { payload });
12
- const object = await client.objects.retrieve(objectId, "+text");
13
- //Expects object.type to be null on first ingestion of content
14
- //User initiated Content Type change via the Composable UI,
15
- //sets object.type to null when they let Composable choose for them.
16
- //sets object.type to chosen type (thus non-null) when user picks a type.
17
- if (object.type) {
18
- log.warn(`Object ${objectId} has already a type. Skipping type creation.`);
19
- return { status: "skipped", message: "Object already has a type: " + object.type.name };
20
- }
21
- if (!object || (!object.text && !object.content?.type?.startsWith("image/") && !object.content?.type?.startsWith("application/pdf"))) {
22
- log.info(`Object ${objectId} not found or text is empty and not an image`, { object });
23
- return { status: "failed", error: "no-text" };
24
- }
25
- const types = await client.types.list();
26
- //make a list of all existing types, and add hints if any
27
- const existing_types = types.filter(t => !["DocumentPart", "Rendition"].includes(t.name));
28
- const content = object.text ? truncByMaxTokens(object.text, params.truncate || 4000) : undefined;
29
- const getImage = async () => {
30
- if (object.content?.type?.includes("pdf") && object.text?.length && object.text?.length < 100) {
31
- return "store:" + objectId;
32
- }
33
- if (!object.content?.type?.startsWith("image/")) {
34
- return undefined;
35
- }
36
- const res = await client.objects.getRendition(objectId, { max_hw: 1024, format: "image/png", generate_if_missing: true });
37
- if (!res.rendition && res.status === "generating") {
38
- //throw to try again
39
- throw new Error(`Rendition for object ${objectId} is in progress`);
40
- }
41
- else if (res.rendition) {
42
- return "store:" + objectId;
43
- }
44
- };
45
- const fileRef = await getImage();
46
- log.info("Execute SelectDocumentType interaction on content with \nexisting types: " + existing_types.map(t => t.name).join(","));
47
- const res = await executeInteractionFromActivity(client, interactionName, params, {
48
- existing_types, content, image: fileRef
49
- });
50
- log.info("Selected Content Type Result: " + JSON.stringify(res.result));
51
- //if type is not identified or not present in the database, generate a new type
52
- let selectedType = undefined;
53
- selectedType = types.find(t => t.name === res.result.document_type);
54
- if (!selectedType) {
55
- log.warn("Document type not idenfified: starting type generation");
56
- const newType = await generateNewType(context, existing_types, content, fileRef);
57
- selectedType = { id: newType.id, name: newType.name };
58
- }
59
- if (!selectedType) {
60
- log.error("Type not found: ", res.result);
61
- throw new Error("Type not found: " + res.result.document_type);
62
- }
63
- //update object with selected type
64
- await client.objects.update(objectId, {
65
- type: selectedType.id,
66
- });
67
- return {
68
- id: selectedType.id,
69
- name: selectedType.name,
70
- isNew: !types.find(t => t.name === selectedType.name)
71
- };
72
- }
73
- async function generateNewType(context, existing_types, content, fileRef) {
74
- const { client, params } = context;
75
- const project = await context.fetchProject();
76
- const interactionName = params.interactionNames?.generateMetadataModel ?? INT_GENERATE_METADATA_MODEL;
77
- const genTypeRes = await executeInteractionFromActivity(client, interactionName, params, {
78
- existing_types: existing_types.map(t => t.name),
79
- content: content,
80
- human_context: project?.configuration?.human_context ?? undefined,
81
- image: fileRef ? fileRef : undefined
82
- });
83
- if (!genTypeRes.result.document_type) {
84
- log.error("No name generated for type", genTypeRes);
85
- throw new Error("No name generated for type");
86
- }
87
- log.info("Generated schema for type", genTypeRes.result.metadata_schema);
88
- const typeData = {
89
- name: genTypeRes.result.document_type,
90
- object_schema: genTypeRes.result.metadata_schema,
91
- is_chunkable: genTypeRes.result.is_chunkable,
92
- };
93
- const type = await client.types.create(typeData);
94
- return type;
95
- }
96
- //# sourceMappingURL=generateOrAssignContentType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateOrAssignContentType.js","sourceRoot":"","sources":["../../../src/activities/generateOrAssignContentType.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { projectResult } from "../dsl/projections.js";
2
- import { setupActivity } from "../dsl/setup/ActivityContext.js";
3
- /**
4
- * We are using a union type for the status parameter since typescript enumbs breaks the workflow code generation
5
- * @param objectId
6
- * @param status
7
- */
8
- export async function getObjectFromStore(payload) {
9
- const { client, params, objectId } = await setupActivity(payload);
10
- const obj = await client.objects.retrieve(objectId, params.select);
11
- const projection = projectResult(payload, params, obj, obj);
12
- return {
13
- ...projection,
14
- id: obj.id,
15
- };
16
- }
17
- //# sourceMappingURL=getObjectFromStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getObjectFromStore.js","sourceRoot":"","sources":["../../../src/activities/getObjectFromStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAWhE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAqD;IAC1F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAkB,OAAO,CAAC,CAAC;IAEnF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAE5D,OAAO;QACH,GAAG,UAAU;QACb,EAAE,EAAE,GAAG,CAAC,EAAE;KACb,CAAA;AAEL,CAAC"}
@@ -1,18 +0,0 @@
1
- // Export here DSL activities
2
- export { createDocumentTypeFromInteractionRun } from "./advanced/createDocumentTypeFromInteractionRun.js";
3
- export { createOrUpdateDocumentFromInteractionRun } from "./advanced/createOrUpdateDocumentFromInteractionRun.js";
4
- export { updateDocumentFromInteractionRun } from "./advanced/updateDocumentFromInteractionRun.js";
5
- export { chunkDocument } from "./chunkDocument.js";
6
- export { createPdfDocumentFromSource } from "./createDocumentFromOther.js";
7
- export { executeInteraction } from "./executeInteraction.js";
8
- export { extractDocumentText } from "./extractDocumentText.js";
9
- export { generateDocumentProperties } from "./generateDocumentProperties.js";
10
- export { generateEmbeddings } from "./generateEmbeddings.js";
11
- export { generateImageRendition } from "./generateImageRendition.js";
12
- export { generateOrAssignContentType } from "./generateOrAssignContentType.js";
13
- export { getObjectFromStore } from "./getObjectFromStore.js";
14
- export { convertPdfToStructuredText } from "./media/processPdfWithTextract.js";
15
- export { transcribeMedia } from "./media/transcribeMediaWithGladia.js";
16
- export { notifyWebhook } from "./notifyWebhook.js";
17
- export { setDocumentStatus } from "./setDocumentStatus.js";
18
- //# sourceMappingURL=index-dsl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-dsl.js","sourceRoot":"","sources":["../../../src/activities/index-dsl.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,oCAAoC,EAAE,MAAM,oDAAoD,CAAC;AAC1G,OAAO,EAAE,wCAAwC,EAAE,MAAM,wDAAwD,CAAC;AAClH,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Here we export all activities to be registered with the temporal worker
3
- */
4
- export * from "./index-dsl.js";
5
- export * from "../iterative-generation/activities/index.js";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/activities/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6CAA6C,CAAC"}
@@ -1,98 +0,0 @@
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 { NoDocumentFound } 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 NoDocumentFound(`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 NoDocumentFound(`Error fetching source ${object.content.source}`);
33
- }
34
- const awsConfig = (await client.projects.integrations.retrieve(client.project, SupportedIntegrations.aws));
35
- const credentials = await getS3AWSCredentials(awsConfig, payload.auth_token, client.project);
36
- const processor = new TextractProcessor({
37
- fileKey: objectId,
38
- region: "us-west-2",
39
- bucket: "cp-textract-tests",
40
- credentials,
41
- log: log,
42
- detectImages: true,
43
- includeConfidenceInTables: true,
44
- });
45
- try {
46
- if (!object.content.source.startsWith("s3://")) {
47
- const buf = await fetchBlobAsBuffer(client, object.content.source);
48
- await processor.upload(buf);
49
- }
50
- const jobId = await processor.startAnalysis(objectId);
51
- let jobStatus = await processor.checkJobStatus(jobId);
52
- while (jobStatus === "IN_PROGRESS") {
53
- await new Promise(resolve => setTimeout(resolve, 5000));
54
- jobStatus = await processor.checkJobStatus(jobId);
55
- }
56
- if (jobStatus === "SUCCEEDED") {
57
- log.info(`Job ${jobId} succeeded, saving results`, { jobId });
58
- const ftext = await processor.processResults(jobId);
59
- const tokensData = countTokens(ftext);
60
- const etag = object.content.etag ?? md5(ftext);
61
- const updateData = {
62
- text: ftext,
63
- text_etag: etag,
64
- tokens: {
65
- ...tokensData,
66
- etag: etag,
67
- }
68
- };
69
- await client.objects.update(objectId, updateData);
70
- console.log("Full text updated");
71
- return { hasText: true, objectId, status: TextExtractionStatus.success, message: "Text extracted successfully" };
72
- }
73
- else {
74
- throw new Error(`Job failed with status: ${jobStatus}`);
75
- }
76
- }
77
- catch (error) {
78
- console.error("Error processing document:", error);
79
- throw error;
80
- }
81
- }
82
- export async function getS3AWSCredentials(awsConfig, composableAuthToken, projectId) {
83
- // fetch s3 role ARN
84
- if (!awsConfig || !awsConfig.enabled) {
85
- throw new NoDocumentFound("AWS integration is not enabled for this project");
86
- }
87
- if (!awsConfig.s3_role_arn) {
88
- throw new NoDocumentFound("S3 Role ARN is not defined in AWS project integration");
89
- }
90
- log.info("Getting AWS credentials for Textract", { projectId, composableAuthToken, roleArn: awsConfig.s3_role_arn });
91
- const credentials = fromWebToken({
92
- webIdentityToken: composableAuthToken,
93
- roleArn: awsConfig.s3_role_arn,
94
- roleSessionName: `cp-project-textract-${projectId}`,
95
- });
96
- return credentials;
97
- }
98
- //# sourceMappingURL=processPdfWithTextract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"processPdfWithTextract.js","sourceRoot":"","sources":["../../../../src/activities/media/processPdfWithTextract.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import { SupportedIntegrations } from "@vertesia/common";
2
- import { activityInfo, CompleteAsyncError, log } from "@temporalio/activity";
3
- import { FetchClient } from "api-fetch-client";
4
- import { setupActivity } from "../../dsl/setup/ActivityContext.js";
5
- import { NoDocumentFound } 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 { params, client, objectId } = await setupActivity(payload);
10
- const gladiaConfig = await client.projects.integrations.retrieve(payload.project_id, SupportedIntegrations.gladia);
11
- if (!gladiaConfig || !gladiaConfig.enabled) {
12
- throw new NoDocumentFound("Gladia integration not enabled");
13
- }
14
- const object = await client.objects.retrieve(objectId, "+text");
15
- const gladiaClient = new FetchClient(gladiaConfig.url ?? GLADIA_URL);
16
- gladiaClient.withHeaders({ "x-gladia-key": gladiaConfig.api_key });
17
- if (object.text && !params.force) {
18
- return { hasText: true, objectId, status: TextExtractionStatus.skipped, message: "text already present and force not enabled" };
19
- }
20
- if (!object.content?.source) {
21
- throw new NoDocumentFound(`No source found for object ${objectId}`);
22
- }
23
- const mediaUrl = await client.store.objects.getContentSource(objectId).then(res => res.source);
24
- if (!mediaUrl) {
25
- throw new NoDocumentFound(`Error fetching source ${object.content.source}`);
26
- }
27
- const taskToken = Buffer.from(activityInfo().taskToken).toString('base64url');
28
- const callbackUrl = generateCallbackUrlForGladia(client.store.baseUrl, payload.auth_token, taskToken, objectId);
29
- log.info(`Transcribing media ${mediaUrl} with Gladia`, { objectId, callbackUrl });
30
- const res = await gladiaClient.post("/transcription", {
31
- payload: {
32
- audio_url: mediaUrl,
33
- callback_url: callbackUrl,
34
- diarization_enhanced: true,
35
- enable_code_switching: true,
36
- subtitles: true,
37
- subtitles_config: {
38
- formats: ["vtt"],
39
- }
40
- }
41
- });
42
- log.info(`Transcription request sent to Gladia`, { objectId, res });
43
- throw new CompleteAsyncError();
44
- }
45
- function generateCallbackUrlForGladia(baseUrl, authToken, taskToken, objectId) {
46
- return `${baseUrl}/api/v1/webhooks/gladia/${objectId}?auth_token=${authToken}&task_token=${taskToken}`;
47
- }
48
- //# sourceMappingURL=transcribeMediaWithGladia.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcribeMediaWithGladia.js","sourceRoot":"","sources":["../../../../src/activities/media/transcribeMediaWithGladia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAwB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAgB5E,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA2D;IAE7F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAwB,OAAO,CAAC,CAAC;IAEzF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAoC,CAAC;IACtJ,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC;IACrE,YAAY,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnE,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAA;IACnI,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,eAAe,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,4BAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhH,GAAG,CAAC,IAAI,CAAC,sBAAsB,QAAQ,cAAc,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAElF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE;QAClD,OAAO,EAAE;YACL,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,WAAW;YACzB,oBAAoB,EAAE,IAAI;YAC1B,qBAAqB,EAAE,IAAI;YAC3B,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE;gBACd,OAAO,EAAE,CAAC,KAAK,CAAC;aACnB;SACJ;KACJ,CAAoC,CAAC;IAEtC,GAAG,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAEpE,MAAM,IAAI,kBAAkB,EAAE,CAAC;AAEnC,CAAC;AAGD,SAAS,4BAA4B,CAAC,OAAe,EAAE,SAAiB,EAAE,SAAiB,EAAE,QAAgB;IACzG,OAAO,GAAG,OAAO,2BAA2B,QAAQ,eAAe,SAAS,eAAe,SAAS,EAAE,CAAC;AAC3G,CAAC"}
@@ -1,31 +0,0 @@
1
- import { log } from "@temporalio/activity";
2
- import { setupActivity } from "../dsl/setup/ActivityContext.js";
3
- import { WorkflowParamNotFound } from "../errors.js";
4
- export async function notifyWebhook(payload) {
5
- const { params } = await setupActivity(payload);
6
- const { target_url, method, payload: requestPayload, headers } = params;
7
- if (!target_url)
8
- throw new WorkflowParamNotFound('target_url');
9
- const body = method === 'POST' ? JSON.stringify({
10
- ...requestPayload,
11
- ...params
12
- }) : undefined;
13
- log.info(`Notifying webhook at ${target_url}`);
14
- const res = await fetch(target_url, {
15
- method,
16
- body,
17
- headers: {
18
- 'Content-Type': 'application/json',
19
- ...headers
20
- },
21
- }).catch(err => {
22
- log.warn(`Failed to notify webhook ${target_url}: ${err}`);
23
- throw new Error(`Failed to notify webhook ${target_url}: ${err}`);
24
- });
25
- if (!res.ok) {
26
- log.warn(`Failed to notify webhook ${target_url} - ${res.status}: ${res.statusText}`, { res });
27
- throw new Error(`Failed to notify webhook ${target_url}: ${res.statusText}`);
28
- }
29
- return { status: res.status, message: res.statusText, url: res.url };
30
- }
31
- //# sourceMappingURL=notifyWebhook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifyWebhook.js","sourceRoot":"","sources":["../../../src/activities/notifyWebhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAerD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAyD;IAEzF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAsB,OAAO,CAAC,CAAC;IACrE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAEvE,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5C,GAAG,cAAc;QACjB,GAAG,MAAM;KACZ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEd,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE;QAChC,MAAM;QACN,IAAI;QACJ,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;YAClC,GAAG,OAAO;SACb;KACJ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,GAAG,CAAC,IAAI,CAAC,4BAA4B,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACV,GAAG,CAAC,IAAI,CAAC,4BAA4B,UAAU,MAAM,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;AAExE,CAAC"}
@@ -1,12 +0,0 @@
1
- import { setupActivity } from "../dsl/setup/ActivityContext.js";
2
- /**
3
- * We are using a union type for the status parameter since typescript enumbs breaks the workflow code generation
4
- * @param objectId
5
- * @param status
6
- */
7
- export async function setDocumentStatus(payload) {
8
- const { client, params, objectId } = await setupActivity(payload);
9
- const res = await client.objects.update(objectId, { status: params.status });
10
- return res.status;
11
- }
12
- //# sourceMappingURL=setDocumentStatus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setDocumentStatus.js","sourceRoot":"","sources":["../../../src/activities/setDocumentStatus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAWhE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA6D;IACjG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAA0B,OAAO,CAAC,CAAC;IAE3F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7E,OAAO,GAAG,CAAC,MAAM,CAAC;AAEtB,CAAC"}