@vertesia/workflow 0.42.2

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 (406) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +24 -0
  3. package/bin/bundle-workflows.mjs +26 -0
  4. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +32 -0
  5. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  6. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +66 -0
  7. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  8. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +18 -0
  9. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  10. package/lib/cjs/activities/chunkDocument.js +79 -0
  11. package/lib/cjs/activities/chunkDocument.js.map +1 -0
  12. package/lib/cjs/activities/createDocumentFromOther.js +64 -0
  13. package/lib/cjs/activities/createDocumentFromOther.js.map +1 -0
  14. package/lib/cjs/activities/executeInteraction.js +135 -0
  15. package/lib/cjs/activities/executeInteraction.js.map +1 -0
  16. package/lib/cjs/activities/extractDocumentText.js +140 -0
  17. package/lib/cjs/activities/extractDocumentText.js.map +1 -0
  18. package/lib/cjs/activities/generateDocumentProperties.js +59 -0
  19. package/lib/cjs/activities/generateDocumentProperties.js.map +1 -0
  20. package/lib/cjs/activities/generateEmbeddings.js +292 -0
  21. package/lib/cjs/activities/generateEmbeddings.js.map +1 -0
  22. package/lib/cjs/activities/generateImageRendition.js +104 -0
  23. package/lib/cjs/activities/generateImageRendition.js.map +1 -0
  24. package/lib/cjs/activities/generateOrAssignContentType.js +103 -0
  25. package/lib/cjs/activities/generateOrAssignContentType.js.map +1 -0
  26. package/lib/cjs/activities/getObjectFromStore.js +20 -0
  27. package/lib/cjs/activities/getObjectFromStore.js.map +1 -0
  28. package/lib/cjs/activities/index.js +54 -0
  29. package/lib/cjs/activities/index.js.map +1 -0
  30. package/lib/cjs/activities/media/processPdfWithTextract.js +102 -0
  31. package/lib/cjs/activities/media/processPdfWithTextract.js.map +1 -0
  32. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +51 -0
  33. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +1 -0
  34. package/lib/cjs/activities/notifyWebhook.js +34 -0
  35. package/lib/cjs/activities/notifyWebhook.js.map +1 -0
  36. package/lib/cjs/activities/setDocumentStatus.js +15 -0
  37. package/lib/cjs/activities/setDocumentStatus.js.map +1 -0
  38. package/lib/cjs/conversion/TextractProcessor.js +416 -0
  39. package/lib/cjs/conversion/TextractProcessor.js.map +1 -0
  40. package/lib/cjs/conversion/image.js +22 -0
  41. package/lib/cjs/conversion/image.js.map +1 -0
  42. package/lib/cjs/conversion/mutool.js +147 -0
  43. package/lib/cjs/conversion/mutool.js.map +1 -0
  44. package/lib/cjs/conversion/pandoc.js +39 -0
  45. package/lib/cjs/conversion/pandoc.js.map +1 -0
  46. package/lib/cjs/conversion/pdf.js +13 -0
  47. package/lib/cjs/conversion/pdf.js.map +1 -0
  48. package/lib/cjs/dsl/conditions.js +81 -0
  49. package/lib/cjs/dsl/conditions.js.map +1 -0
  50. package/lib/cjs/dsl/dsl-workflow.js +223 -0
  51. package/lib/cjs/dsl/dsl-workflow.js.map +1 -0
  52. package/lib/cjs/dsl/projections.js +59 -0
  53. package/lib/cjs/dsl/projections.js.map +1 -0
  54. package/lib/cjs/dsl/setup/ActivityContext.js +96 -0
  55. package/lib/cjs/dsl/setup/ActivityContext.js.map +1 -0
  56. package/lib/cjs/dsl/setup/fetch/DataProvider.js +51 -0
  57. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +1 -0
  58. package/lib/cjs/dsl/setup/fetch/index.js +16 -0
  59. package/lib/cjs/dsl/setup/fetch/index.js.map +1 -0
  60. package/lib/cjs/dsl/setup/fetch/providers.js +67 -0
  61. package/lib/cjs/dsl/setup/fetch/providers.js.map +1 -0
  62. package/lib/cjs/dsl/test/test-child-workflow.js +10 -0
  63. package/lib/cjs/dsl/test/test-child-workflow.js.map +1 -0
  64. package/lib/cjs/dsl/validation.js +122 -0
  65. package/lib/cjs/dsl/validation.js.map +1 -0
  66. package/lib/cjs/dsl/vars.js +341 -0
  67. package/lib/cjs/dsl/vars.js.map +1 -0
  68. package/lib/cjs/dsl/walk.js +100 -0
  69. package/lib/cjs/dsl/walk.js.map +1 -0
  70. package/lib/cjs/errors.js +36 -0
  71. package/lib/cjs/errors.js.map +1 -0
  72. package/lib/cjs/index.js +43 -0
  73. package/lib/cjs/index.js.map +1 -0
  74. package/lib/cjs/iterative-generation/activities/extractToc.js +47 -0
  75. package/lib/cjs/iterative-generation/activities/extractToc.js.map +1 -0
  76. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +69 -0
  77. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +1 -0
  78. package/lib/cjs/iterative-generation/activities/generatePart.js +73 -0
  79. package/lib/cjs/iterative-generation/activities/generatePart.js.map +1 -0
  80. package/lib/cjs/iterative-generation/activities/generateToc.js +91 -0
  81. package/lib/cjs/iterative-generation/activities/generateToc.js.map +1 -0
  82. package/lib/cjs/iterative-generation/activities/index.js +12 -0
  83. package/lib/cjs/iterative-generation/activities/index.js.map +1 -0
  84. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +55 -0
  85. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  86. package/lib/cjs/iterative-generation/types.js +5 -0
  87. package/lib/cjs/iterative-generation/types.js.map +1 -0
  88. package/lib/cjs/iterative-generation/utils.js +118 -0
  89. package/lib/cjs/iterative-generation/utils.js.map +1 -0
  90. package/lib/cjs/package.json +3 -0
  91. package/lib/cjs/result-types.js +10 -0
  92. package/lib/cjs/result-types.js.map +1 -0
  93. package/lib/cjs/system/generateObjectText.js +89 -0
  94. package/lib/cjs/system/generateObjectText.js.map +1 -0
  95. package/lib/cjs/system/notifyWebhookWorkflow.js +52 -0
  96. package/lib/cjs/system/notifyWebhookWorkflow.js.map +1 -0
  97. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +37 -0
  98. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  99. package/lib/cjs/utils/auth.js +15 -0
  100. package/lib/cjs/utils/auth.js.map +1 -0
  101. package/lib/cjs/utils/blobs.js +63 -0
  102. package/lib/cjs/utils/blobs.js.map +1 -0
  103. package/lib/cjs/utils/client.js +25 -0
  104. package/lib/cjs/utils/client.js.map +1 -0
  105. package/lib/cjs/utils/expand-vars.js +33 -0
  106. package/lib/cjs/utils/expand-vars.js.map +1 -0
  107. package/lib/cjs/utils/memory.js +72 -0
  108. package/lib/cjs/utils/memory.js.map +1 -0
  109. package/lib/cjs/utils/tokens.js +38 -0
  110. package/lib/cjs/utils/tokens.js.map +1 -0
  111. package/lib/cjs/vars.js +20 -0
  112. package/lib/cjs/vars.js.map +1 -0
  113. package/lib/cjs/workflows.js +17 -0
  114. package/lib/cjs/workflows.js.map +1 -0
  115. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +29 -0
  116. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -0
  117. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +63 -0
  118. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -0
  119. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +15 -0
  120. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -0
  121. package/lib/esm/activities/chunkDocument.js +76 -0
  122. package/lib/esm/activities/chunkDocument.js.map +1 -0
  123. package/lib/esm/activities/createDocumentFromOther.js +58 -0
  124. package/lib/esm/activities/createDocumentFromOther.js.map +1 -0
  125. package/lib/esm/activities/executeInteraction.js +131 -0
  126. package/lib/esm/activities/executeInteraction.js.map +1 -0
  127. package/lib/esm/activities/extractDocumentText.js +137 -0
  128. package/lib/esm/activities/extractDocumentText.js.map +1 -0
  129. package/lib/esm/activities/generateDocumentProperties.js +56 -0
  130. package/lib/esm/activities/generateDocumentProperties.js.map +1 -0
  131. package/lib/esm/activities/generateEmbeddings.js +256 -0
  132. package/lib/esm/activities/generateEmbeddings.js.map +1 -0
  133. package/lib/esm/activities/generateImageRendition.js +98 -0
  134. package/lib/esm/activities/generateImageRendition.js.map +1 -0
  135. package/lib/esm/activities/generateOrAssignContentType.js +100 -0
  136. package/lib/esm/activities/generateOrAssignContentType.js.map +1 -0
  137. package/lib/esm/activities/getObjectFromStore.js +17 -0
  138. package/lib/esm/activities/getObjectFromStore.js.map +1 -0
  139. package/lib/esm/activities/index.js +21 -0
  140. package/lib/esm/activities/index.js.map +1 -0
  141. package/lib/esm/activities/media/processPdfWithTextract.js +98 -0
  142. package/lib/esm/activities/media/processPdfWithTextract.js.map +1 -0
  143. package/lib/esm/activities/media/transcribeMediaWithGladia.js +48 -0
  144. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +1 -0
  145. package/lib/esm/activities/notifyWebhook.js +31 -0
  146. package/lib/esm/activities/notifyWebhook.js.map +1 -0
  147. package/lib/esm/activities/setDocumentStatus.js +12 -0
  148. package/lib/esm/activities/setDocumentStatus.js.map +1 -0
  149. package/lib/esm/conversion/TextractProcessor.js +409 -0
  150. package/lib/esm/conversion/TextractProcessor.js.map +1 -0
  151. package/lib/esm/conversion/image.js +16 -0
  152. package/lib/esm/conversion/image.js.map +1 -0
  153. package/lib/esm/conversion/mutool.js +139 -0
  154. package/lib/esm/conversion/mutool.js.map +1 -0
  155. package/lib/esm/conversion/pandoc.js +36 -0
  156. package/lib/esm/conversion/pandoc.js.map +1 -0
  157. package/lib/esm/conversion/pdf.js +7 -0
  158. package/lib/esm/conversion/pdf.js.map +1 -0
  159. package/lib/esm/dsl/conditions.js +75 -0
  160. package/lib/esm/dsl/conditions.js.map +1 -0
  161. package/lib/esm/dsl/dsl-workflow.js +216 -0
  162. package/lib/esm/dsl/dsl-workflow.js.map +1 -0
  163. package/lib/esm/dsl/projections.js +55 -0
  164. package/lib/esm/dsl/projections.js.map +1 -0
  165. package/lib/esm/dsl/setup/ActivityContext.js +91 -0
  166. package/lib/esm/dsl/setup/ActivityContext.js.map +1 -0
  167. package/lib/esm/dsl/setup/fetch/DataProvider.js +47 -0
  168. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +1 -0
  169. package/lib/esm/dsl/setup/fetch/index.js +12 -0
  170. package/lib/esm/dsl/setup/fetch/index.js.map +1 -0
  171. package/lib/esm/dsl/setup/fetch/providers.js +61 -0
  172. package/lib/esm/dsl/setup/fetch/providers.js.map +1 -0
  173. package/lib/esm/dsl/test/test-child-workflow.js +5 -0
  174. package/lib/esm/dsl/test/test-child-workflow.js.map +1 -0
  175. package/lib/esm/dsl/validation.js +118 -0
  176. package/lib/esm/dsl/validation.js.map +1 -0
  177. package/lib/esm/dsl/vars.js +335 -0
  178. package/lib/esm/dsl/vars.js.map +1 -0
  179. package/lib/esm/dsl/walk.js +96 -0
  180. package/lib/esm/dsl/walk.js.map +1 -0
  181. package/lib/esm/errors.js +30 -0
  182. package/lib/esm/errors.js.map +1 -0
  183. package/lib/esm/index.js +25 -0
  184. package/lib/esm/index.js.map +1 -0
  185. package/lib/esm/iterative-generation/activities/extractToc.js +44 -0
  186. package/lib/esm/iterative-generation/activities/extractToc.js.map +1 -0
  187. package/lib/esm/iterative-generation/activities/finalizeOutput.js +66 -0
  188. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +1 -0
  189. package/lib/esm/iterative-generation/activities/generatePart.js +70 -0
  190. package/lib/esm/iterative-generation/activities/generatePart.js.map +1 -0
  191. package/lib/esm/iterative-generation/activities/generateToc.js +88 -0
  192. package/lib/esm/iterative-generation/activities/generateToc.js.map +1 -0
  193. package/lib/esm/iterative-generation/activities/index.js +5 -0
  194. package/lib/esm/iterative-generation/activities/index.js.map +1 -0
  195. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +52 -0
  196. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +1 -0
  197. package/lib/esm/iterative-generation/types.js +2 -0
  198. package/lib/esm/iterative-generation/types.js.map +1 -0
  199. package/lib/esm/iterative-generation/utils.js +109 -0
  200. package/lib/esm/iterative-generation/utils.js.map +1 -0
  201. package/lib/esm/result-types.js +7 -0
  202. package/lib/esm/result-types.js.map +1 -0
  203. package/lib/esm/system/generateObjectText.js +86 -0
  204. package/lib/esm/system/generateObjectText.js.map +1 -0
  205. package/lib/esm/system/notifyWebhookWorkflow.js +49 -0
  206. package/lib/esm/system/notifyWebhookWorkflow.js.map +1 -0
  207. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +34 -0
  208. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +1 -0
  209. package/lib/esm/utils/auth.js +8 -0
  210. package/lib/esm/utils/auth.js.map +1 -0
  211. package/lib/esm/utils/blobs.js +52 -0
  212. package/lib/esm/utils/blobs.js.map +1 -0
  213. package/lib/esm/utils/client.js +22 -0
  214. package/lib/esm/utils/client.js.map +1 -0
  215. package/lib/esm/utils/expand-vars.js +30 -0
  216. package/lib/esm/utils/expand-vars.js.map +1 -0
  217. package/lib/esm/utils/memory.js +60 -0
  218. package/lib/esm/utils/memory.js.map +1 -0
  219. package/lib/esm/utils/tokens.js +34 -0
  220. package/lib/esm/utils/tokens.js.map +1 -0
  221. package/lib/esm/vars.js +4 -0
  222. package/lib/esm/vars.js.map +1 -0
  223. package/lib/esm/workflows.js +9 -0
  224. package/lib/esm/workflows.js.map +1 -0
  225. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +17 -0
  226. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +1 -0
  227. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +29 -0
  228. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +1 -0
  229. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +19 -0
  230. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +1 -0
  231. package/lib/types/activities/chunkDocument.d.ts +18 -0
  232. package/lib/types/activities/chunkDocument.d.ts.map +1 -0
  233. package/lib/types/activities/createDocumentFromOther.d.ts +21 -0
  234. package/lib/types/activities/createDocumentFromOther.d.ts.map +1 -0
  235. package/lib/types/activities/executeInteraction.d.ts +40 -0
  236. package/lib/types/activities/executeInteraction.d.ts.map +1 -0
  237. package/lib/types/activities/extractDocumentText.d.ts +9 -0
  238. package/lib/types/activities/extractDocumentText.d.ts.map +1 -0
  239. package/lib/types/activities/generateDocumentProperties.d.ts +32 -0
  240. package/lib/types/activities/generateDocumentProperties.d.ts.map +1 -0
  241. package/lib/types/activities/generateEmbeddings.d.ts +49 -0
  242. package/lib/types/activities/generateEmbeddings.d.ts.map +1 -0
  243. package/lib/types/activities/generateImageRendition.d.ts +17 -0
  244. package/lib/types/activities/generateImageRendition.d.ts.map +1 -0
  245. package/lib/types/activities/generateOrAssignContentType.d.ts +44 -0
  246. package/lib/types/activities/generateOrAssignContentType.d.ts.map +1 -0
  247. package/lib/types/activities/getObjectFromStore.d.ts +14 -0
  248. package/lib/types/activities/getObjectFromStore.d.ts.map +1 -0
  249. package/lib/types/activities/index.d.ts +21 -0
  250. package/lib/types/activities/index.d.ts.map +1 -0
  251. package/lib/types/activities/media/processPdfWithTextract.d.ts +26 -0
  252. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +1 -0
  253. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +14 -0
  254. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +1 -0
  255. package/lib/types/activities/notifyWebhook.d.ts +17 -0
  256. package/lib/types/activities/notifyWebhook.d.ts.map +1 -0
  257. package/lib/types/activities/setDocumentStatus.d.ts +15 -0
  258. package/lib/types/activities/setDocumentStatus.d.ts.map +1 -0
  259. package/lib/types/conversion/TextractProcessor.d.ts +45 -0
  260. package/lib/types/conversion/TextractProcessor.d.ts.map +1 -0
  261. package/lib/types/conversion/image.d.ts +9 -0
  262. package/lib/types/conversion/image.d.ts.map +1 -0
  263. package/lib/types/conversion/mutool.d.ts +19 -0
  264. package/lib/types/conversion/mutool.d.ts.map +1 -0
  265. package/lib/types/conversion/pandoc.d.ts +2 -0
  266. package/lib/types/conversion/pandoc.d.ts.map +1 -0
  267. package/lib/types/conversion/pdf.d.ts +2 -0
  268. package/lib/types/conversion/pdf.d.ts.map +1 -0
  269. package/lib/types/dsl/conditions.d.ts +2 -0
  270. package/lib/types/dsl/conditions.d.ts.map +1 -0
  271. package/lib/types/dsl/dsl-workflow.d.ts +5 -0
  272. package/lib/types/dsl/dsl-workflow.d.ts.map +1 -0
  273. package/lib/types/dsl/projections.d.ts +4 -0
  274. package/lib/types/dsl/projections.d.ts.map +1 -0
  275. package/lib/types/dsl/setup/ActivityContext.d.ts +14 -0
  276. package/lib/types/dsl/setup/ActivityContext.d.ts.map +1 -0
  277. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +9 -0
  278. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +1 -0
  279. package/lib/types/dsl/setup/fetch/index.d.ts +6 -0
  280. package/lib/types/dsl/setup/fetch/index.d.ts.map +1 -0
  281. package/lib/types/dsl/setup/fetch/providers.d.ts +25 -0
  282. package/lib/types/dsl/setup/fetch/providers.d.ts.map +1 -0
  283. package/lib/types/dsl/test/test-child-workflow.d.ts +4 -0
  284. package/lib/types/dsl/test/test-child-workflow.d.ts.map +1 -0
  285. package/lib/types/dsl/validation.d.ts +4 -0
  286. package/lib/types/dsl/validation.d.ts.map +1 -0
  287. package/lib/types/dsl/vars.d.ts +48 -0
  288. package/lib/types/dsl/vars.d.ts.map +1 -0
  289. package/lib/types/dsl/walk.d.ts +18 -0
  290. package/lib/types/dsl/walk.d.ts.map +1 -0
  291. package/lib/types/errors.d.ts +16 -0
  292. package/lib/types/errors.d.ts.map +1 -0
  293. package/lib/types/index.d.ts +24 -0
  294. package/lib/types/index.d.ts.map +1 -0
  295. package/lib/types/iterative-generation/activities/extractToc.d.ts +10 -0
  296. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +1 -0
  297. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +3 -0
  298. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +1 -0
  299. package/lib/types/iterative-generation/activities/generatePart.d.ts +3 -0
  300. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +1 -0
  301. package/lib/types/iterative-generation/activities/generateToc.d.ts +4 -0
  302. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +1 -0
  303. package/lib/types/iterative-generation/activities/index.d.ts +5 -0
  304. package/lib/types/iterative-generation/activities/index.d.ts.map +1 -0
  305. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +3 -0
  306. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +1 -0
  307. package/lib/types/iterative-generation/types.d.ts +79 -0
  308. package/lib/types/iterative-generation/types.d.ts.map +1 -0
  309. package/lib/types/iterative-generation/utils.d.ts +27 -0
  310. package/lib/types/iterative-generation/utils.d.ts.map +1 -0
  311. package/lib/types/result-types.d.ts +22 -0
  312. package/lib/types/result-types.d.ts.map +1 -0
  313. package/lib/types/system/generateObjectText.d.ts +4 -0
  314. package/lib/types/system/generateObjectText.d.ts.map +1 -0
  315. package/lib/types/system/notifyWebhookWorkflow.d.ts +6 -0
  316. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +1 -0
  317. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +40 -0
  318. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +1 -0
  319. package/lib/types/utils/auth.d.ts +4 -0
  320. package/lib/types/utils/auth.d.ts.map +1 -0
  321. package/lib/types/utils/blobs.d.ts +8 -0
  322. package/lib/types/utils/blobs.d.ts.map +1 -0
  323. package/lib/types/utils/client.d.ts +7 -0
  324. package/lib/types/utils/client.d.ts.map +1 -0
  325. package/lib/types/utils/expand-vars.d.ts +8 -0
  326. package/lib/types/utils/expand-vars.d.ts.map +1 -0
  327. package/lib/types/utils/memory.d.ts +12 -0
  328. package/lib/types/utils/memory.d.ts.map +1 -0
  329. package/lib/types/utils/tokens.d.ts +11 -0
  330. package/lib/types/utils/tokens.d.ts.map +1 -0
  331. package/lib/types/vars.d.ts +3 -0
  332. package/lib/types/vars.d.ts.map +1 -0
  333. package/lib/types/workflows.d.ts +9 -0
  334. package/lib/types/workflows.d.ts.map +1 -0
  335. package/lib/workflows-bundle.js +18394 -0
  336. package/package.json +109 -0
  337. package/src/activities/advanced/createDocumentTypeFromInteractionRun.ts +54 -0
  338. package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +97 -0
  339. package/src/activities/advanced/updateDocumentFromInteractionRun.ts +34 -0
  340. package/src/activities/chunkDocument.ts +124 -0
  341. package/src/activities/createDocumentFromOther.ts +92 -0
  342. package/src/activities/executeInteraction.ts +191 -0
  343. package/src/activities/extractDocumentText.ts +174 -0
  344. package/src/activities/generateDocumentProperties.ts +93 -0
  345. package/src/activities/generateEmbeddings.ts +345 -0
  346. package/src/activities/generateImageRendition.ts +134 -0
  347. package/src/activities/generateOrAssignContentType.ts +152 -0
  348. package/src/activities/getObjectFromStore.ts +31 -0
  349. package/src/activities/index.ts +21 -0
  350. package/src/activities/media/processPdfWithTextract.ts +141 -0
  351. package/src/activities/media/transcribeMediaWithGladia.ts +83 -0
  352. package/src/activities/notifyWebhook.test.ts +32 -0
  353. package/src/activities/notifyWebhook.ts +51 -0
  354. package/src/activities/setDocumentStatus.ts +25 -0
  355. package/src/conversion/TextractProcessor.ts +505 -0
  356. package/src/conversion/image.test.ts +26 -0
  357. package/src/conversion/image.ts +22 -0
  358. package/src/conversion/mutool.test.ts +74 -0
  359. package/src/conversion/mutool.ts +180 -0
  360. package/src/conversion/pandoc.test.ts +22 -0
  361. package/src/conversion/pandoc.ts +44 -0
  362. package/src/conversion/pdf.test.ts +35 -0
  363. package/src/conversion/pdf.ts +8 -0
  364. package/src/dsl/conditions.ts +76 -0
  365. package/src/dsl/dsl-workflow.test.ts +58 -0
  366. package/src/dsl/dsl-workflow.ts +235 -0
  367. package/src/dsl/ms.d.ts +11 -0
  368. package/src/dsl/projections.test.ts +159 -0
  369. package/src/dsl/projections.ts +72 -0
  370. package/src/dsl/setup/ActivityContext.ts +106 -0
  371. package/src/dsl/setup/fetch/DataProvider.ts +45 -0
  372. package/src/dsl/setup/fetch/index.ts +19 -0
  373. package/src/dsl/setup/fetch/providers.ts +67 -0
  374. package/src/dsl/test/test-child-workflow.ts +6 -0
  375. package/src/dsl/validation.test.ts +257 -0
  376. package/src/dsl/validation.ts +125 -0
  377. package/src/dsl/vars.test.ts +245 -0
  378. package/src/dsl/vars.ts +340 -0
  379. package/src/dsl/walk.test.ts +81 -0
  380. package/src/dsl/walk.ts +103 -0
  381. package/src/dsl/workflow-exec-child.test.ts +182 -0
  382. package/src/dsl/workflow-fetch.test.ts +135 -0
  383. package/src/dsl/workflow-import.test.ts +89 -0
  384. package/src/dsl/workflow.test.ts +110 -0
  385. package/src/errors.ts +24 -0
  386. package/src/index.ts +27 -0
  387. package/src/iterative-generation/activities/extractToc.ts +49 -0
  388. package/src/iterative-generation/activities/finalizeOutput.ts +77 -0
  389. package/src/iterative-generation/activities/generatePart.ts +82 -0
  390. package/src/iterative-generation/activities/generateToc.ts +98 -0
  391. package/src/iterative-generation/activities/index.ts +4 -0
  392. package/src/iterative-generation/iterativeGenerationWorkflow.ts +67 -0
  393. package/src/iterative-generation/types.ts +99 -0
  394. package/src/iterative-generation/utils.ts +123 -0
  395. package/src/result-types.ts +25 -0
  396. package/src/system/generateObjectText.ts +109 -0
  397. package/src/system/notifyWebhookWorkflow.ts +64 -0
  398. package/src/system/recalculateEmbeddingsWorkflow.ts +46 -0
  399. package/src/utils/auth.ts +10 -0
  400. package/src/utils/blobs.ts +58 -0
  401. package/src/utils/client.ts +31 -0
  402. package/src/utils/expand-vars.ts +31 -0
  403. package/src/utils/memory.ts +66 -0
  404. package/src/utils/tokens.ts +44 -0
  405. package/src/vars.ts +3 -0
  406. package/src/workflows.ts +9 -0
@@ -0,0 +1,98 @@
1
+ import { WorkflowExecutionPayload } from "@vertesia/common";
2
+ import { getClient } from "../../utils/client.js";
3
+ import { buildAndPublishMemoryPack } from "../../utils/memory.js";
4
+ import { IterativeGenerationPayload, OutputMemoryMeta, Toc, TocIndex } from "../types.js";
5
+ import { executeWithVars, tocIndex } from "../utils.js";
6
+
7
+ const defaultTocSchema = {
8
+ "type": "object",
9
+ "properties": {
10
+ "sections": {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "object",
14
+ "properties": {
15
+ "id": {
16
+ "type": "string",
17
+ "description": "the id of the section, can be a filename if working on a file, a slug if working on a document or path, or a unique identifier if working on a model."
18
+ },
19
+ "operation": {
20
+ "type": "string",
21
+ "enum": ["create", "update", "delete"],
22
+ "description": "The operation to perform on the section, create, update or delete. If update, you will be requested later to provide the list of change operation to perform."
23
+ },
24
+ "name": {
25
+ "type": "string",
26
+ "description": "The name or title of the section, should be the path in the OpenAPI spec, of the title of the section/part."
27
+ },
28
+ "description": {
29
+ "type": "string"
30
+ },
31
+ "instructions": {
32
+ "type": "string"
33
+ },
34
+ "parts":
35
+ {
36
+ "type": "array",
37
+ "description": "when the section is too large, you can split it into parts, each part should have a title and description. Use it to split the section into subsection. When doing an API documentation, you can do one part for each path. When generating code, you can do one part for each method. When generating an OpenAPI spec, you can do one part for each operation.",
38
+ "items": {
39
+ "type": "object",
40
+ "properties": {
41
+ "id": {
42
+ "type": "string",
43
+ "description": "the id of the part, can be a filename if working on a file, a slug if working on a document or path, or a unique identifier if working on a model."
44
+ },
45
+ "name": {
46
+ "type": "string",
47
+ "description": "The name or title of the part, should be the path in the OpenAPI spec, of the title of the section/part."
48
+ },
49
+ /*
50
+ "description": {
51
+ "type": "string"
52
+ },
53
+ */
54
+ "instructions": {
55
+ "type": "string"
56
+ }
57
+ },
58
+ "required": [
59
+ "id",
60
+ "name",
61
+ ]
62
+ }
63
+ }
64
+ },
65
+ "required": [
66
+ "id",
67
+ "name",
68
+ "operation"
69
+ ]
70
+ }
71
+ }
72
+ },
73
+ "required": [
74
+ "sections"
75
+ ]
76
+ }
77
+
78
+ export async function it_gen_generateToc(payload: WorkflowExecutionPayload): Promise<TocIndex> {
79
+ const vars = payload.vars as IterativeGenerationPayload;
80
+
81
+ const schema = vars.toc_schema || defaultTocSchema;
82
+
83
+ const client = getClient(payload);
84
+
85
+ const run = await executeWithVars(client, vars.interaction, vars, undefined, schema);
86
+
87
+ const toc = run.result as Toc;
88
+
89
+ await buildAndPublishMemoryPack(client, `${vars.memory}/output`, async () => {
90
+ return {
91
+ toc,
92
+ lastProcessdPart: undefined, // the part index (a number array)
93
+ previouslyGenerated: ""
94
+ } as OutputMemoryMeta
95
+ });
96
+
97
+ return tocIndex(toc);
98
+ }
@@ -0,0 +1,4 @@
1
+ export { it_gen_generateToc } from './generateToc.js';
2
+ export { it_gen_generatePart } from './generatePart.js';
3
+ export { it_gen_extractToc } from './extractToc.js';
4
+ export { it_gen_finalizeOutput } from './finalizeOutput.js'
@@ -0,0 +1,67 @@
1
+ import { WorkflowExecutionPayload } from "@vertesia/common";
2
+
3
+ import { log, proxyActivities } from "@temporalio/workflow";
4
+ import * as activities from "./activities/index.js";
5
+ import { IterativeGenerationPayload, PartIndex, SECTION_ID_PLACEHOLDER } from "./types.js";
6
+
7
+ const {
8
+ it_gen_extractToc,
9
+ it_gen_generateToc,
10
+ it_gen_generatePart,
11
+ it_gen_finalizeOutput
12
+ } = proxyActivities<typeof activities>({
13
+ startToCloseTimeout: "15 minute",
14
+ retry: {
15
+ initialInterval: '30s',
16
+ backoffCoefficient: 2,
17
+ maximumAttempts: 20,
18
+ maximumInterval: 100 * 30 * 1000, //ms
19
+ nonRetryableErrorTypes: [],
20
+ },
21
+ });
22
+
23
+ export async function iterativeGenerationWorkflow(payload: WorkflowExecutionPayload) {
24
+ log.info(`Executing Iterative generation workflow.`);
25
+
26
+ const vars = payload.vars as IterativeGenerationPayload;
27
+ if (vars.section_file_pattern && !vars.section_file_pattern.includes(SECTION_ID_PLACEHOLDER)) {
28
+ throw new Error(`Invalid section_file_pattern: ${vars.section_file_pattern}. It must include the ${SECTION_ID_PLACEHOLDER} placeholder.`);
29
+ }
30
+
31
+ // extractToc tries to extract the toc from the input memory pack (toc.json or toc.yaml)
32
+ // the generateToc activity is retiurning the toc hierarchy.
33
+ // It doesn't include extra TOC details like description etc.
34
+ // To minimize the payload size only the hierarchy and the section/part names are returned
35
+ let toc = await it_gen_extractToc(payload);
36
+ if (!toc) {
37
+ log.info(`No TOC was specified in the input memory pack. Generating one.`);
38
+ toc = await it_gen_generateToc(payload);
39
+ } else {
40
+ log.info(`Using the TOC specified in the input memory pack.`);
41
+ }
42
+
43
+ if (toc.sections.length === 0) {
44
+ //TODO how to handle this case?
45
+ throw new Error("Nothing to generate: TOC is empty");
46
+ }
47
+
48
+ for (const section of toc.sections) {
49
+ log.info(`Generating section: ${formatPath(section)}`);
50
+ await it_gen_generatePart(payload, section.path);
51
+
52
+ if (section.parts) {
53
+ for (const part of section.parts) {
54
+ log.info(`Generating part: ${formatPath(part)}`);
55
+ await it_gen_generatePart(payload, part.path);
56
+ }
57
+ }
58
+ }
59
+
60
+ log.info(`Post-processing output memory pack`);
61
+ await it_gen_finalizeOutput(payload);
62
+ }
63
+
64
+ function formatPath(node: PartIndex) {
65
+ // we print 1 based indexes
66
+ return node.path.map(i => i + 1).join('.') + ' ' + node.name;
67
+ }
@@ -0,0 +1,99 @@
1
+
2
+ export const SECTION_ID_PLACEHOLDER = '%id';
3
+
4
+ /**
5
+ * An iterative generation workflow uses 2 memory packs one for input and the other for output.
6
+ * The input memory packs must be available in the project blobs bucket at `${tenant_id/memories/${memory_name}/input.tar.gz`.
7
+ * The output memory pack will be generated at `${tenant_id/memories/${memory_name}/output.tar.gz`.
8
+ * Each iteration is overwriting the output memory pack with the new generated content.
9
+ * The complete name of the input and output memory packs are: "${name}/input" and "${name}/output" where name is the base memory name.
10
+ */
11
+ export interface IterativeGenerationPayload {
12
+ // the main interaction to execute. If iterative_generation is defined
13
+ // the main interaction will only be used to prepare the iteration (to generate the TOC)
14
+ // otherwise it will be used for the iterative generation too.
15
+ interaction: string;
16
+ // if defined this will be used for the iterative interaction which will genrate parts.
17
+ // otherwise the main interaction will be used for iterative generation.
18
+ iterative_interaction?: string;
19
+ // the environment to use
20
+ environment?: string;
21
+ // the model to use
22
+ model?: string;
23
+ // A custom max tokens
24
+ max_tokens?: number;
25
+ // A custom temperature
26
+ temperature?: number;
27
+ // the memory pack group name
28
+ memory: string;
29
+ // the input memory pack mapping
30
+ input_mapping?: Record<string, string>;
31
+ // custom toc schema if any TODO remove this
32
+ toc_schema?: Record<string, any>
33
+ /**
34
+ * If not set to "none" the previously generated content will be passed to the iteration.
35
+ * If not set at all defaults to "section".
36
+ * If "section" is used only the section content previously generated will be passed to the next iteration.
37
+ * If "document" is used the whole previopusly generated document content will be passed to the next iteration.
38
+ * Defaults to section.
39
+ */
40
+ rememberance_strategy?: "document" | "section" | "none";
41
+ /**
42
+ * If present will save sections in files using the pattern
43
+ * The pattern must include a placeholder for the section id: %id.
44
+ * Examples: `sections/%id.md`, `%id/page.mdx` etc.
45
+ * @see SECTION_ID_PLACEHOLDER
46
+ */
47
+ section_file_pattern?: string;
48
+ /**
49
+ * An optional header to prepend to the section files.
50
+ * The header can contain the following variables:
51
+ * - ${section} - the section object
52
+ * - ${date} - the date when the file was generated
53
+ */
54
+ section_file_header?: string;
55
+ }
56
+
57
+ export interface TocPart {
58
+ id: string;
59
+ name: string;
60
+ description?: string;
61
+ instructions?: string;
62
+ }
63
+
64
+ export interface TocSection {
65
+ id: string;
66
+ name: string;
67
+ description?: string;
68
+ instructions?: string;
69
+ parts?: TocPart[];
70
+ }
71
+
72
+ export interface Toc {
73
+ sections: TocSection[];
74
+ }
75
+
76
+
77
+ export interface SectionIndex extends PartIndex {
78
+ parts?: PartIndex[];
79
+ }
80
+ export interface PartIndex {
81
+ path: number[];
82
+ name: string;
83
+ }
84
+ export interface TocIndex {
85
+ sections: SectionIndex[];
86
+ }
87
+
88
+ export interface OutputMemoryMeta {
89
+ toc: Toc;
90
+ previouslyGenerated: string;
91
+ lastProcessdPart?: number[] | undefined;
92
+ }
93
+
94
+ export interface Section {
95
+ id: string;
96
+ name: string;
97
+ description?: string;
98
+ content: string;
99
+ }
@@ -0,0 +1,123 @@
1
+ import { ComposableClient } from "@vertesia/client";
2
+ import { ExecutionRun } from "@vertesia/common";
3
+ import { ApplicationFailure } from "@temporalio/workflow";
4
+ import { OutputMemoryMeta, PartIndex, Toc, TocIndex, TocSection } from "./types.js";
5
+
6
+ export interface ExecuteOptions {
7
+ interaction: string;
8
+ memory: string;
9
+ memory_mapping?: Record<string, any>;
10
+ environment?: string;
11
+ model?: string;
12
+ max_tokens?: number;
13
+ temperature?: number;
14
+ result_schema?: Record<string, any>;
15
+ }
16
+
17
+ export async function execute<T = any>(client: ComposableClient, options: ExecuteOptions): Promise<ExecutionRun<any, T>> {
18
+ return client.interactions.executeByName(options.interaction, {
19
+ data: {
20
+ ...options.memory_mapping,
21
+ "@memory": options.memory
22
+ },
23
+ result_schema: options.result_schema,
24
+ config: {
25
+ environment: options.environment,
26
+ model: options.model,
27
+ max_tokens: options.max_tokens,
28
+ temperature: options.temperature,
29
+ }
30
+ });
31
+ }
32
+
33
+ export function executeWithVars<T = any>(client: ComposableClient, interaction: string, vars: Record<string, any>, mapping?: Record<string, any>, result_schema?: Record<string, any>): Promise<ExecutionRun<any, T>> {
34
+ if (mapping) {
35
+ mapping = { ...vars.input_mapping, ...mapping };
36
+ } else {
37
+ mapping = vars.input_mapping;
38
+ }
39
+ return execute(client, {
40
+ interaction: interaction,
41
+ memory: `${vars.memory}/input`,
42
+ memory_mapping: mapping,
43
+ environment: vars.environment,
44
+ model: vars.model,
45
+ max_tokens: vars.max_tokens,
46
+ temperature: vars.temperature,
47
+ result_schema: result_schema
48
+ });
49
+ }
50
+
51
+ export function isSamePartIndex(part1: number[], part2: number[]) {
52
+ return part1 && part2 && part1.length === part2.length && part1.every((v, i) => v === part2[i]);
53
+ }
54
+
55
+ export function getPreviousPathIndex(toc: Toc, pathIndex: number[]): number[] | null {
56
+ let [sectionIdx, partIdx] = pathIndex;
57
+ if (partIdx === undefined) {
58
+ let prevSectionIdx = sectionIdx - 1;
59
+ if (prevSectionIdx < 0) {
60
+ return null;
61
+ } else {
62
+ const prevParts = toc.sections[prevSectionIdx].parts;
63
+ if (prevParts && prevParts.length > 0) { // return the last part of the previous section
64
+ return [prevSectionIdx, prevParts.length - 1];
65
+ } else { // if no parts return the section itself
66
+ return [prevSectionIdx];
67
+ }
68
+ }
69
+ } else if (partIdx > 0) { // return the previous part in the same section
70
+ return [sectionIdx, partIdx - 1];
71
+ } else { // if the first part return the section itself
72
+ return [sectionIdx];
73
+ }
74
+ }
75
+
76
+
77
+ export function expectMemoryIsConsistent(meta: OutputMemoryMeta, pathIndex: number[]) {
78
+ const metaLastProcessedPart = meta.lastProcessdPart;
79
+ if (!metaLastProcessedPart) {
80
+ if (pathIndex.length > 1 && pathIndex[0] !== 0) {
81
+ throw ApplicationFailure.nonRetryable('Memory last processed part is not consitent with the workflow.', 'MemoryPackNotConsistent', { currentIndex: pathIndex, expectedPreviousIndex: [pathIndex[0], pathIndex[1] - 1], previousIndex: metaLastProcessedPart });
82
+ } else {
83
+ return;
84
+ }
85
+ }
86
+ const prevPathIndex = getPreviousPathIndex(meta.toc, pathIndex);
87
+ if (!prevPathIndex) {
88
+ throw ApplicationFailure.nonRetryable('Memory last processed part is not consitent with the workflow', 'MemoryPackNotConsistent', { currentIndex: pathIndex, expectedPreviousIndex: prevPathIndex, previousIndex: metaLastProcessedPart });
89
+ } else if (!isSamePartIndex(prevPathIndex, metaLastProcessedPart)) {
90
+ throw ApplicationFailure.nonRetryable('Memory last processed part is not consitent with the workflow', 'MemoryPackNotConsistent', { currentIndex: pathIndex, expectedPreviousIndex: prevPathIndex, previousIndex: meta.lastProcessdPart });
91
+ }
92
+ }
93
+
94
+ export function sectionWithoutParts(section: TocSection) {
95
+ const clone = { ...section };
96
+ delete clone.parts;
97
+ return clone;
98
+ }
99
+
100
+ export function tocIndex(toc: Toc): TocIndex {
101
+ const index = { sections: [] } as TocIndex;
102
+ const sections = toc.sections;
103
+ for (let i = 0, l = sections.length; i < l; i++) {
104
+ const section = sections[i];
105
+ const indexParts: PartIndex[] = [];
106
+ if (section.parts) {
107
+ const parts = section.parts;
108
+ for (let k = 0, ll = section.parts.length; k < ll; k++) {
109
+ const part = parts[k];
110
+ indexParts.push({
111
+ name: part.id,
112
+ path: [i, k]
113
+ });
114
+ }
115
+ }
116
+ index.sections.push({
117
+ name: section.id,
118
+ path: [i],
119
+ parts: indexParts
120
+ });
121
+ }
122
+ return index;
123
+ }
@@ -0,0 +1,25 @@
1
+
2
+
3
+
4
+ /**
5
+ * The result of a text extraction operation.
6
+ */
7
+ export interface TextExtractionResult {
8
+ objectId: string;
9
+ status: TextExtractionStatus;
10
+ hasText: boolean;
11
+ message?: string;
12
+ tokens?: {
13
+ count: number;
14
+ encoding: string;
15
+ etag: string;
16
+ };
17
+ len?: number;
18
+ error?: string;
19
+ }
20
+
21
+ export enum TextExtractionStatus {
22
+ skipped = "skipped",
23
+ success = "success",
24
+ error = "error",
25
+ }
@@ -0,0 +1,109 @@
1
+
2
+ import { DSLWorkflowExecutionPayload } from "@vertesia/common";
3
+ import { log, proxyActivities } from "@temporalio/workflow";
4
+ import { GetObject } from "../activities/getObjectFromStore.js";
5
+ import * as activities from "../activities/index.js";
6
+ import { NoDocumentFound } from "../errors.js";
7
+ import { TextExtractionResult } from "../index.js";
8
+
9
+ const {
10
+ getObjectFromStore,
11
+ extractDocumentText
12
+ } = proxyActivities<typeof activities>({
13
+ startToCloseTimeout: "5 minute",
14
+ retry: {
15
+ initialInterval: '5s',
16
+ backoffCoefficient: 2,
17
+ maximumAttempts: 5,
18
+ maximumInterval: 100 * 30 * 1000, //ms
19
+ nonRetryableErrorTypes: [],
20
+ },
21
+ });
22
+
23
+ const {
24
+ transcribeMedia,
25
+ convertPdfToStructuredText
26
+ } = proxyActivities<typeof activities>({
27
+ startToCloseTimeout: "30 minute",
28
+ retry: {
29
+ initialInterval: '30s',
30
+ backoffCoefficient: 2,
31
+ maximumAttempts: 5,
32
+ maximumInterval: 100 * 30 * 1000, //ms
33
+ nonRetryableErrorTypes: [],
34
+ },
35
+ });
36
+
37
+
38
+ export async function generateObjectText(payload: DSLWorkflowExecutionPayload): Promise<TextExtractionResult> {
39
+
40
+ const { objectIds } = payload;
41
+ const objectId = objectIds[0];
42
+
43
+ const object = await getObjectFromStore({
44
+ ...payload,
45
+ activity: {
46
+ name: "getObject",
47
+ } satisfies GetObject,
48
+ params: {},
49
+ workflow_name: "Generate Text",
50
+ });
51
+
52
+ if (!object.content?.source) {
53
+ throw new NoDocumentFound(`No source or mimetype found for object ${objectId}`, objectIds);
54
+ }
55
+ const mimetype = object.content.type;
56
+ if (!mimetype) {
57
+ throw new NoDocumentFound(`No mimetype found for object ${objectId}`, objectIds);
58
+ }
59
+
60
+ const converter = ConverterActivity.find(({ type }) => type.test(mimetype));
61
+ if (!converter) {
62
+ throw new NoDocumentFound(`No converter found for mimetype ${mimetype}`, objectIds);
63
+ }
64
+ log.info(`Converting file type ${mimetype} to text with ${converter.name}`);
65
+
66
+ const res = await converter.activity(payload)({
67
+ ...payload,
68
+ activity: {
69
+ name: converter.name,
70
+ },
71
+ params: converter.params,
72
+ workflow_name: "Generate Text",
73
+ });
74
+
75
+ log.info("Generated text for object", {res, objectId});
76
+ return res;
77
+
78
+ }
79
+
80
+
81
+ const ConverterActivity = [
82
+ {
83
+ type: /application\/pdf/,
84
+ activity: (payload: DSLWorkflowExecutionPayload) => {
85
+ const useTextractForPDF = payload.vars?.useTextractForPdf?? false;
86
+ return useTextractForPDF ? convertPdfToStructuredText : extractDocumentText;
87
+ },
88
+ name: "ConvertPdfToStructuredText",
89
+ params: {},
90
+ },
91
+ {
92
+ type: /audio\/.+/,
93
+ activity: () => transcribeMedia,
94
+ name: "TranscribeMedia",
95
+ params: {},
96
+ },
97
+ {
98
+ type: /video\/.+/,
99
+ activity: () => transcribeMedia,
100
+ name: "TranscribeMedia",
101
+ params: {},
102
+ },
103
+ {
104
+ type: /.+/,
105
+ activity: () => extractDocumentText,
106
+ name: "extractText",
107
+ params: {},
108
+ }
109
+ ]
@@ -0,0 +1,64 @@
1
+
2
+ import { ContentEventName, DSLWorkflowExecutionPayload } from "@vertesia/common";
3
+ import { log, proxyActivities } from "@temporalio/workflow";
4
+ import * as activities from "../activities/index.js";
5
+
6
+ const {
7
+ notifyWebhook
8
+ } = proxyActivities<typeof activities>({
9
+ startToCloseTimeout: "5 minute",
10
+ retry: {
11
+ initialInterval: '5s',
12
+ backoffCoefficient: 2,
13
+ maximumAttempts: 5,
14
+ maximumInterval: 100 * 30 * 1000, //ms
15
+ nonRetryableErrorTypes: [],
16
+ },
17
+ });
18
+
19
+
20
+ interface NotifyWebhookWorkflowParams extends DSLWorkflowExecutionPayload {
21
+ }
22
+
23
+ export async function notifyWebhookWorkflow(payload: NotifyWebhookWorkflowParams): Promise<any> {
24
+
25
+ const { objectIds, vars } = payload;
26
+ const notifications = [];
27
+ const endpoints = vars?.webhooks || [];
28
+ const eventName = vars.event || ContentEventName.workflow_finished;
29
+
30
+ if (!endpoints.length) {
31
+ log.info(`No webhooks to notify`);
32
+ return { notifications: [], message: "No webhooks to notify" };
33
+ }
34
+
35
+ for (const ep of endpoints) {
36
+ const n = notifyWebhook({
37
+ ...payload,
38
+ activity: {
39
+ name: "notifyWebhook",
40
+ } ,
41
+ params: {
42
+ target_url: ep,
43
+ method: 'POST',
44
+ payload: {
45
+ object_ids: objectIds,
46
+ event: eventName,
47
+ data: vars.webhook_data ?? undefined,
48
+ vars
49
+ }
50
+ },
51
+ workflow_name: "Notify Webhook",
52
+ } ).then(res => {
53
+ log.info(`Webhook notified at ${ep} with response code: ${res.status}`, { res });
54
+ return res;
55
+ });
56
+ notifications.push(n);
57
+ }
58
+
59
+ const res = await Promise.all(notifications);
60
+ log.info(`Webhooks notified`);
61
+
62
+ return { notifications: res, message: "Webhooks notified" };
63
+
64
+ }
@@ -0,0 +1,46 @@
1
+ import { proxyActivities } from "@temporalio/workflow";
2
+
3
+ import { DSLActivitySpec, DSLWorkflowExecutionPayload, SupportedEmbeddingTypes } from "@vertesia/common";
4
+ import { GenerateEmbeddings } from "../activities/generateEmbeddings.js";
5
+ import * as activities from "../activities/index.js";
6
+ import { NoDocumentFound } from "../errors.js";
7
+
8
+ const {
9
+ generateEmbeddings,
10
+ } = proxyActivities<typeof activities>({
11
+ startToCloseTimeout: "5 minute",
12
+ retry: {
13
+ initialInterval: '10s',
14
+ backoffCoefficient: 2,
15
+ maximumAttempts: 10,
16
+ maximumInterval: 100 * 30 * 1000, //ms
17
+ nonRetryableErrorTypes: [NoDocumentFound.name],
18
+ },
19
+ });
20
+
21
+ export async function recalculateEmbeddingsWorkflow(payload: DSLWorkflowExecutionPayload) {
22
+
23
+ const embeddings = [];
24
+
25
+ for (const type of Object.values(SupportedEmbeddingTypes)) {
26
+ const activityConfig: DSLActivitySpec = {
27
+ name: 'generateEmbeddings',
28
+ params: {
29
+ force: true,
30
+ type
31
+ },
32
+ } satisfies GenerateEmbeddings;
33
+
34
+ embeddings.push(generateEmbeddings({
35
+ ...payload,
36
+ params: {},
37
+ workflow_name: 'recalculateEmbeddingsWorkflow',
38
+ activity: activityConfig,
39
+ }));
40
+ }
41
+
42
+ const res = await Promise.all(embeddings);
43
+
44
+ return res;
45
+
46
+ }
@@ -0,0 +1,10 @@
1
+ import { AuthTokenPayload, ProjectRef } from '@vertesia/common';
2
+ import jwt from 'jsonwebtoken';
3
+
4
+ export function decodeAuthToken(token: string): AuthTokenPayload {
5
+ return jwt.decode(token, { json: true }) as AuthTokenPayload;
6
+ }
7
+
8
+ export function getProjectFromToken(token: string): ProjectRef | undefined {
9
+ return decodeAuthToken(token)?.project;
10
+ }