@vertesia/workflow 0.77.0 → 0.78.0-dev-9372725

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 (409) hide show
  1. package/package.json +128 -120
  2. package/src/activities/advanced/createDocumentTypeFromInteractionRun.ts +8 -5
  3. package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +6 -10
  4. package/src/activities/advanced/updateDocumentFromInteractionRun.ts +4 -1
  5. package/src/activities/chunkDocument.ts +4 -1
  6. package/src/activities/executeInteraction.ts +16 -9
  7. package/src/activities/generateDocumentProperties.ts +13 -7
  8. package/src/activities/generateOrAssignContentType.ts +17 -11
  9. package/src/activities/index-dsl.ts +1 -1
  10. package/src/activities/notifyWebhook.test.ts +117 -19
  11. package/src/activities/notifyWebhook.ts +17 -4
  12. package/src/activities/rateLimiter.ts +41 -0
  13. package/src/conversion/image.ts +6 -3
  14. package/src/dsl/dsl-workflow.ts +80 -0
  15. package/src/dsl/setup/ActivityContext.ts +45 -12
  16. package/src/dsl/workflow-exec-child.test.ts +4 -3
  17. package/src/dsl/workflow-fetch.test.ts +1 -1
  18. package/src/dsl/workflow-import.test.ts +1 -1
  19. package/src/dsl/workflow.test.ts +2 -1
  20. package/src/errors.ts +13 -0
  21. package/src/index.ts +1 -1
  22. package/src/iterative-generation/activities/extractToc.ts +26 -12
  23. package/src/iterative-generation/activities/finalizeOutput.ts +52 -29
  24. package/src/iterative-generation/activities/generatePart.ts +66 -24
  25. package/src/iterative-generation/activities/generateToc.ts +85 -66
  26. package/src/iterative-generation/utils.ts +2 -2
  27. package/src/utils/blobs.ts +3 -1
  28. package/src/utils/client.ts +22 -8
  29. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -32
  30. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  31. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -72
  32. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  33. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +0 -18
  34. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  35. package/lib/cjs/activities/chunkDocument.js +0 -84
  36. package/lib/cjs/activities/chunkDocument.js.map +0 -1
  37. package/lib/cjs/activities/createDocumentFromOther.js +0 -64
  38. package/lib/cjs/activities/createDocumentFromOther.js.map +0 -1
  39. package/lib/cjs/activities/executeInteraction.js +0 -186
  40. package/lib/cjs/activities/executeInteraction.js.map +0 -1
  41. package/lib/cjs/activities/extractDocumentText.js +0 -156
  42. package/lib/cjs/activities/extractDocumentText.js.map +0 -1
  43. package/lib/cjs/activities/generateDocumentProperties.js +0 -78
  44. package/lib/cjs/activities/generateDocumentProperties.js.map +0 -1
  45. package/lib/cjs/activities/generateEmbeddings.js +0 -358
  46. package/lib/cjs/activities/generateEmbeddings.js.map +0 -1
  47. package/lib/cjs/activities/generateOrAssignContentType.js +0 -123
  48. package/lib/cjs/activities/generateOrAssignContentType.js.map +0 -1
  49. package/lib/cjs/activities/getObjectFromStore.js +0 -20
  50. package/lib/cjs/activities/getObjectFromStore.js.map +0 -1
  51. package/lib/cjs/activities/handleError.js +0 -22
  52. package/lib/cjs/activities/handleError.js.map +0 -1
  53. package/lib/cjs/activities/identifyTextSections.js +0 -48
  54. package/lib/cjs/activities/identifyTextSections.js.map +0 -1
  55. package/lib/cjs/activities/index-dsl.js +0 -43
  56. package/lib/cjs/activities/index-dsl.js.map +0 -1
  57. package/lib/cjs/activities/index.js +0 -21
  58. package/lib/cjs/activities/index.js.map +0 -1
  59. package/lib/cjs/activities/media/processPdfWithTextract.js +0 -103
  60. package/lib/cjs/activities/media/processPdfWithTextract.js.map +0 -1
  61. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +0 -51
  62. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +0 -1
  63. package/lib/cjs/activities/notifyWebhook.js +0 -33
  64. package/lib/cjs/activities/notifyWebhook.js.map +0 -1
  65. package/lib/cjs/activities/renditions/generateImageRendition.js +0 -66
  66. package/lib/cjs/activities/renditions/generateImageRendition.js.map +0 -1
  67. package/lib/cjs/activities/renditions/generateVideoRendition.js +0 -200
  68. package/lib/cjs/activities/renditions/generateVideoRendition.js.map +0 -1
  69. package/lib/cjs/activities/setDocumentStatus.js +0 -15
  70. package/lib/cjs/activities/setDocumentStatus.js.map +0 -1
  71. package/lib/cjs/conversion/TextractProcessor.js +0 -417
  72. package/lib/cjs/conversion/TextractProcessor.js.map +0 -1
  73. package/lib/cjs/conversion/image.js +0 -147
  74. package/lib/cjs/conversion/image.js.map +0 -1
  75. package/lib/cjs/conversion/markitdown.js +0 -42
  76. package/lib/cjs/conversion/markitdown.js.map +0 -1
  77. package/lib/cjs/conversion/mutool.js +0 -147
  78. package/lib/cjs/conversion/mutool.js.map +0 -1
  79. package/lib/cjs/conversion/pandoc.js +0 -39
  80. package/lib/cjs/conversion/pandoc.js.map +0 -1
  81. package/lib/cjs/dsl/conditions.js +0 -81
  82. package/lib/cjs/dsl/conditions.js.map +0 -1
  83. package/lib/cjs/dsl/dsl-workflow.js +0 -277
  84. package/lib/cjs/dsl/dsl-workflow.js.map +0 -1
  85. package/lib/cjs/dsl/dslProxyActivities.js +0 -23
  86. package/lib/cjs/dsl/dslProxyActivities.js.map +0 -1
  87. package/lib/cjs/dsl/projections.js +0 -59
  88. package/lib/cjs/dsl/projections.js.map +0 -1
  89. package/lib/cjs/dsl/setup/ActivityContext.js +0 -120
  90. package/lib/cjs/dsl/setup/ActivityContext.js.map +0 -1
  91. package/lib/cjs/dsl/setup/fetch/DataProvider.js +0 -51
  92. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +0 -1
  93. package/lib/cjs/dsl/setup/fetch/index.js +0 -16
  94. package/lib/cjs/dsl/setup/fetch/index.js.map +0 -1
  95. package/lib/cjs/dsl/setup/fetch/providers.js +0 -67
  96. package/lib/cjs/dsl/setup/fetch/providers.js.map +0 -1
  97. package/lib/cjs/dsl/test/test-child-workflow.js +0 -10
  98. package/lib/cjs/dsl/test/test-child-workflow.js.map +0 -1
  99. package/lib/cjs/dsl/validation.js +0 -122
  100. package/lib/cjs/dsl/validation.js.map +0 -1
  101. package/lib/cjs/dsl/vars.js +0 -341
  102. package/lib/cjs/dsl/vars.js.map +0 -1
  103. package/lib/cjs/dsl/walk.js +0 -100
  104. package/lib/cjs/dsl/walk.js.map +0 -1
  105. package/lib/cjs/dsl.js +0 -20
  106. package/lib/cjs/dsl.js.map +0 -1
  107. package/lib/cjs/errors.js +0 -49
  108. package/lib/cjs/errors.js.map +0 -1
  109. package/lib/cjs/index.js +0 -54
  110. package/lib/cjs/index.js.map +0 -1
  111. package/lib/cjs/iterative-generation/activities/extractToc.js +0 -47
  112. package/lib/cjs/iterative-generation/activities/extractToc.js.map +0 -1
  113. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +0 -69
  114. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +0 -1
  115. package/lib/cjs/iterative-generation/activities/generatePart.js +0 -73
  116. package/lib/cjs/iterative-generation/activities/generatePart.js.map +0 -1
  117. package/lib/cjs/iterative-generation/activities/generateToc.js +0 -91
  118. package/lib/cjs/iterative-generation/activities/generateToc.js.map +0 -1
  119. package/lib/cjs/iterative-generation/activities/index.js +0 -12
  120. package/lib/cjs/iterative-generation/activities/index.js.map +0 -1
  121. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +0 -56
  122. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  123. package/lib/cjs/iterative-generation/types.js +0 -5
  124. package/lib/cjs/iterative-generation/types.js.map +0 -1
  125. package/lib/cjs/iterative-generation/utils.js +0 -121
  126. package/lib/cjs/iterative-generation/utils.js.map +0 -1
  127. package/lib/cjs/package.json +0 -3
  128. package/lib/cjs/result-types.js +0 -10
  129. package/lib/cjs/result-types.js.map +0 -1
  130. package/lib/cjs/system/notifyWebhookWorkflow.js +0 -46
  131. package/lib/cjs/system/notifyWebhookWorkflow.js.map +0 -1
  132. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +0 -33
  133. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  134. package/lib/cjs/utils/auth.js +0 -15
  135. package/lib/cjs/utils/auth.js.map +0 -1
  136. package/lib/cjs/utils/blobs.js +0 -61
  137. package/lib/cjs/utils/blobs.js.map +0 -1
  138. package/lib/cjs/utils/chunks.js +0 -14
  139. package/lib/cjs/utils/chunks.js.map +0 -1
  140. package/lib/cjs/utils/client.js +0 -29
  141. package/lib/cjs/utils/client.js.map +0 -1
  142. package/lib/cjs/utils/expand-vars.js +0 -33
  143. package/lib/cjs/utils/expand-vars.js.map +0 -1
  144. package/lib/cjs/utils/memory.js +0 -65
  145. package/lib/cjs/utils/memory.js.map +0 -1
  146. package/lib/cjs/utils/renditions.js +0 -88
  147. package/lib/cjs/utils/renditions.js.map +0 -1
  148. package/lib/cjs/utils/storage.js +0 -55
  149. package/lib/cjs/utils/storage.js.map +0 -1
  150. package/lib/cjs/utils/tokens.js +0 -38
  151. package/lib/cjs/utils/tokens.js.map +0 -1
  152. package/lib/cjs/vars.js +0 -20
  153. package/lib/cjs/vars.js.map +0 -1
  154. package/lib/cjs/workflows.js +0 -15
  155. package/lib/cjs/workflows.js.map +0 -1
  156. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -29
  157. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  158. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -69
  159. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  160. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +0 -15
  161. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  162. package/lib/esm/activities/chunkDocument.js +0 -81
  163. package/lib/esm/activities/chunkDocument.js.map +0 -1
  164. package/lib/esm/activities/createDocumentFromOther.js +0 -58
  165. package/lib/esm/activities/createDocumentFromOther.js.map +0 -1
  166. package/lib/esm/activities/executeInteraction.js +0 -182
  167. package/lib/esm/activities/executeInteraction.js.map +0 -1
  168. package/lib/esm/activities/extractDocumentText.js +0 -153
  169. package/lib/esm/activities/extractDocumentText.js.map +0 -1
  170. package/lib/esm/activities/generateDocumentProperties.js +0 -75
  171. package/lib/esm/activities/generateDocumentProperties.js.map +0 -1
  172. package/lib/esm/activities/generateEmbeddings.js +0 -355
  173. package/lib/esm/activities/generateEmbeddings.js.map +0 -1
  174. package/lib/esm/activities/generateOrAssignContentType.js +0 -120
  175. package/lib/esm/activities/generateOrAssignContentType.js.map +0 -1
  176. package/lib/esm/activities/getObjectFromStore.js +0 -17
  177. package/lib/esm/activities/getObjectFromStore.js.map +0 -1
  178. package/lib/esm/activities/handleError.js +0 -19
  179. package/lib/esm/activities/handleError.js.map +0 -1
  180. package/lib/esm/activities/identifyTextSections.js +0 -45
  181. package/lib/esm/activities/identifyTextSections.js.map +0 -1
  182. package/lib/esm/activities/index-dsl.js +0 -21
  183. package/lib/esm/activities/index-dsl.js.map +0 -1
  184. package/lib/esm/activities/index.js +0 -5
  185. package/lib/esm/activities/index.js.map +0 -1
  186. package/lib/esm/activities/media/processPdfWithTextract.js +0 -99
  187. package/lib/esm/activities/media/processPdfWithTextract.js.map +0 -1
  188. package/lib/esm/activities/media/transcribeMediaWithGladia.js +0 -48
  189. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +0 -1
  190. package/lib/esm/activities/notifyWebhook.js +0 -30
  191. package/lib/esm/activities/notifyWebhook.js.map +0 -1
  192. package/lib/esm/activities/renditions/generateImageRendition.js +0 -63
  193. package/lib/esm/activities/renditions/generateImageRendition.js.map +0 -1
  194. package/lib/esm/activities/renditions/generateVideoRendition.js +0 -194
  195. package/lib/esm/activities/renditions/generateVideoRendition.js.map +0 -1
  196. package/lib/esm/activities/setDocumentStatus.js +0 -12
  197. package/lib/esm/activities/setDocumentStatus.js.map +0 -1
  198. package/lib/esm/conversion/TextractProcessor.js +0 -410
  199. package/lib/esm/conversion/TextractProcessor.js.map +0 -1
  200. package/lib/esm/conversion/image.js +0 -141
  201. package/lib/esm/conversion/image.js.map +0 -1
  202. package/lib/esm/conversion/markitdown.js +0 -36
  203. package/lib/esm/conversion/markitdown.js.map +0 -1
  204. package/lib/esm/conversion/mutool.js +0 -139
  205. package/lib/esm/conversion/mutool.js.map +0 -1
  206. package/lib/esm/conversion/pandoc.js +0 -36
  207. package/lib/esm/conversion/pandoc.js.map +0 -1
  208. package/lib/esm/dsl/conditions.js +0 -75
  209. package/lib/esm/dsl/conditions.js.map +0 -1
  210. package/lib/esm/dsl/dsl-workflow.js +0 -270
  211. package/lib/esm/dsl/dsl-workflow.js.map +0 -1
  212. package/lib/esm/dsl/dslProxyActivities.js +0 -20
  213. package/lib/esm/dsl/dslProxyActivities.js.map +0 -1
  214. package/lib/esm/dsl/projections.js +0 -55
  215. package/lib/esm/dsl/projections.js.map +0 -1
  216. package/lib/esm/dsl/setup/ActivityContext.js +0 -115
  217. package/lib/esm/dsl/setup/ActivityContext.js.map +0 -1
  218. package/lib/esm/dsl/setup/fetch/DataProvider.js +0 -47
  219. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +0 -1
  220. package/lib/esm/dsl/setup/fetch/index.js +0 -12
  221. package/lib/esm/dsl/setup/fetch/index.js.map +0 -1
  222. package/lib/esm/dsl/setup/fetch/providers.js +0 -61
  223. package/lib/esm/dsl/setup/fetch/providers.js.map +0 -1
  224. package/lib/esm/dsl/test/test-child-workflow.js +0 -5
  225. package/lib/esm/dsl/test/test-child-workflow.js.map +0 -1
  226. package/lib/esm/dsl/validation.js +0 -118
  227. package/lib/esm/dsl/validation.js.map +0 -1
  228. package/lib/esm/dsl/vars.js +0 -335
  229. package/lib/esm/dsl/vars.js.map +0 -1
  230. package/lib/esm/dsl/walk.js +0 -96
  231. package/lib/esm/dsl/walk.js.map +0 -1
  232. package/lib/esm/dsl.js +0 -4
  233. package/lib/esm/dsl.js.map +0 -1
  234. package/lib/esm/errors.js +0 -42
  235. package/lib/esm/errors.js.map +0 -1
  236. package/lib/esm/index.js +0 -36
  237. package/lib/esm/index.js.map +0 -1
  238. package/lib/esm/iterative-generation/activities/extractToc.js +0 -44
  239. package/lib/esm/iterative-generation/activities/extractToc.js.map +0 -1
  240. package/lib/esm/iterative-generation/activities/finalizeOutput.js +0 -66
  241. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +0 -1
  242. package/lib/esm/iterative-generation/activities/generatePart.js +0 -70
  243. package/lib/esm/iterative-generation/activities/generatePart.js.map +0 -1
  244. package/lib/esm/iterative-generation/activities/generateToc.js +0 -88
  245. package/lib/esm/iterative-generation/activities/generateToc.js.map +0 -1
  246. package/lib/esm/iterative-generation/activities/index.js +0 -5
  247. package/lib/esm/iterative-generation/activities/index.js.map +0 -1
  248. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +0 -53
  249. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  250. package/lib/esm/iterative-generation/types.js +0 -2
  251. package/lib/esm/iterative-generation/types.js.map +0 -1
  252. package/lib/esm/iterative-generation/utils.js +0 -112
  253. package/lib/esm/iterative-generation/utils.js.map +0 -1
  254. package/lib/esm/result-types.js +0 -7
  255. package/lib/esm/result-types.js.map +0 -1
  256. package/lib/esm/system/notifyWebhookWorkflow.js +0 -43
  257. package/lib/esm/system/notifyWebhookWorkflow.js.map +0 -1
  258. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +0 -30
  259. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  260. package/lib/esm/utils/auth.js +0 -8
  261. package/lib/esm/utils/auth.js.map +0 -1
  262. package/lib/esm/utils/blobs.js +0 -51
  263. package/lib/esm/utils/blobs.js.map +0 -1
  264. package/lib/esm/utils/chunks.js +0 -9
  265. package/lib/esm/utils/chunks.js.map +0 -1
  266. package/lib/esm/utils/client.js +0 -25
  267. package/lib/esm/utils/client.js.map +0 -1
  268. package/lib/esm/utils/expand-vars.js +0 -30
  269. package/lib/esm/utils/expand-vars.js.map +0 -1
  270. package/lib/esm/utils/memory.js +0 -55
  271. package/lib/esm/utils/memory.js.map +0 -1
  272. package/lib/esm/utils/renditions.js +0 -80
  273. package/lib/esm/utils/renditions.js.map +0 -1
  274. package/lib/esm/utils/storage.js +0 -46
  275. package/lib/esm/utils/storage.js.map +0 -1
  276. package/lib/esm/utils/tokens.js +0 -34
  277. package/lib/esm/utils/tokens.js.map +0 -1
  278. package/lib/esm/vars.js +0 -4
  279. package/lib/esm/vars.js.map +0 -1
  280. package/lib/esm/workflows.js +0 -8
  281. package/lib/esm/workflows.js.map +0 -1
  282. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +0 -17
  283. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +0 -1
  284. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +0 -39
  285. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +0 -1
  286. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +0 -19
  287. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +0 -1
  288. package/lib/types/activities/chunkDocument.d.ts +0 -33
  289. package/lib/types/activities/chunkDocument.d.ts.map +0 -1
  290. package/lib/types/activities/createDocumentFromOther.d.ts +0 -21
  291. package/lib/types/activities/createDocumentFromOther.d.ts.map +0 -1
  292. package/lib/types/activities/executeInteraction.d.ts +0 -57
  293. package/lib/types/activities/executeInteraction.d.ts.map +0 -1
  294. package/lib/types/activities/extractDocumentText.d.ts +0 -10
  295. package/lib/types/activities/extractDocumentText.d.ts.map +0 -1
  296. package/lib/types/activities/generateDocumentProperties.d.ts +0 -32
  297. package/lib/types/activities/generateDocumentProperties.d.ts.map +0 -1
  298. package/lib/types/activities/generateEmbeddings.d.ts +0 -53
  299. package/lib/types/activities/generateEmbeddings.d.ts.map +0 -1
  300. package/lib/types/activities/generateOrAssignContentType.d.ts +0 -44
  301. package/lib/types/activities/generateOrAssignContentType.d.ts.map +0 -1
  302. package/lib/types/activities/getObjectFromStore.d.ts +0 -14
  303. package/lib/types/activities/getObjectFromStore.d.ts.map +0 -1
  304. package/lib/types/activities/handleError.d.ts +0 -6
  305. package/lib/types/activities/handleError.d.ts.map +0 -1
  306. package/lib/types/activities/identifyTextSections.d.ts +0 -12
  307. package/lib/types/activities/identifyTextSections.d.ts.map +0 -1
  308. package/lib/types/activities/index-dsl.d.ts +0 -20
  309. package/lib/types/activities/index-dsl.d.ts.map +0 -1
  310. package/lib/types/activities/index.d.ts +0 -5
  311. package/lib/types/activities/index.d.ts.map +0 -1
  312. package/lib/types/activities/media/processPdfWithTextract.d.ts +0 -26
  313. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +0 -1
  314. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +0 -14
  315. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +0 -1
  316. package/lib/types/activities/notifyWebhook.d.ts +0 -16
  317. package/lib/types/activities/notifyWebhook.d.ts.map +0 -1
  318. package/lib/types/activities/renditions/generateImageRendition.d.ts +0 -14
  319. package/lib/types/activities/renditions/generateImageRendition.d.ts.map +0 -1
  320. package/lib/types/activities/renditions/generateVideoRendition.d.ts +0 -15
  321. package/lib/types/activities/renditions/generateVideoRendition.d.ts.map +0 -1
  322. package/lib/types/activities/setDocumentStatus.d.ts +0 -15
  323. package/lib/types/activities/setDocumentStatus.d.ts.map +0 -1
  324. package/lib/types/conversion/TextractProcessor.d.ts +0 -45
  325. package/lib/types/conversion/TextractProcessor.d.ts.map +0 -1
  326. package/lib/types/conversion/image.d.ts +0 -13
  327. package/lib/types/conversion/image.d.ts.map +0 -1
  328. package/lib/types/conversion/markitdown.d.ts +0 -2
  329. package/lib/types/conversion/markitdown.d.ts.map +0 -1
  330. package/lib/types/conversion/mutool.d.ts +0 -19
  331. package/lib/types/conversion/mutool.d.ts.map +0 -1
  332. package/lib/types/conversion/pandoc.d.ts +0 -2
  333. package/lib/types/conversion/pandoc.d.ts.map +0 -1
  334. package/lib/types/dsl/conditions.d.ts +0 -2
  335. package/lib/types/dsl/conditions.d.ts.map +0 -1
  336. package/lib/types/dsl/dsl-workflow.d.ts +0 -5
  337. package/lib/types/dsl/dsl-workflow.d.ts.map +0 -1
  338. package/lib/types/dsl/dslProxyActivities.d.ts +0 -10
  339. package/lib/types/dsl/dslProxyActivities.d.ts.map +0 -1
  340. package/lib/types/dsl/projections.d.ts +0 -4
  341. package/lib/types/dsl/projections.d.ts.map +0 -1
  342. package/lib/types/dsl/setup/ActivityContext.d.ts +0 -17
  343. package/lib/types/dsl/setup/ActivityContext.d.ts.map +0 -1
  344. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +0 -9
  345. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +0 -1
  346. package/lib/types/dsl/setup/fetch/index.d.ts +0 -6
  347. package/lib/types/dsl/setup/fetch/index.d.ts.map +0 -1
  348. package/lib/types/dsl/setup/fetch/providers.d.ts +0 -25
  349. package/lib/types/dsl/setup/fetch/providers.d.ts.map +0 -1
  350. package/lib/types/dsl/test/test-child-workflow.d.ts +0 -4
  351. package/lib/types/dsl/test/test-child-workflow.d.ts.map +0 -1
  352. package/lib/types/dsl/validation.d.ts +0 -4
  353. package/lib/types/dsl/validation.d.ts.map +0 -1
  354. package/lib/types/dsl/vars.d.ts +0 -48
  355. package/lib/types/dsl/vars.d.ts.map +0 -1
  356. package/lib/types/dsl/walk.d.ts +0 -18
  357. package/lib/types/dsl/walk.d.ts.map +0 -1
  358. package/lib/types/dsl.d.ts +0 -4
  359. package/lib/types/dsl.d.ts.map +0 -1
  360. package/lib/types/errors.d.ts +0 -23
  361. package/lib/types/errors.d.ts.map +0 -1
  362. package/lib/types/index.d.ts +0 -35
  363. package/lib/types/index.d.ts.map +0 -1
  364. package/lib/types/iterative-generation/activities/extractToc.d.ts +0 -10
  365. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +0 -1
  366. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +0 -3
  367. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +0 -1
  368. package/lib/types/iterative-generation/activities/generatePart.d.ts +0 -3
  369. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +0 -1
  370. package/lib/types/iterative-generation/activities/generateToc.d.ts +0 -4
  371. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +0 -1
  372. package/lib/types/iterative-generation/activities/index.d.ts +0 -5
  373. package/lib/types/iterative-generation/activities/index.d.ts.map +0 -1
  374. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +0 -3
  375. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +0 -1
  376. package/lib/types/iterative-generation/types.d.ts +0 -79
  377. package/lib/types/iterative-generation/types.d.ts.map +0 -1
  378. package/lib/types/iterative-generation/utils.d.ts +0 -27
  379. package/lib/types/iterative-generation/utils.d.ts.map +0 -1
  380. package/lib/types/result-types.d.ts +0 -22
  381. package/lib/types/result-types.d.ts.map +0 -1
  382. package/lib/types/system/notifyWebhookWorkflow.d.ts +0 -7
  383. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +0 -1
  384. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +0 -25
  385. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +0 -1
  386. package/lib/types/utils/auth.d.ts +0 -4
  387. package/lib/types/utils/auth.d.ts.map +0 -1
  388. package/lib/types/utils/blobs.d.ts +0 -7
  389. package/lib/types/utils/blobs.d.ts.map +0 -1
  390. package/lib/types/utils/chunks.d.ts +0 -9
  391. package/lib/types/utils/chunks.d.ts.map +0 -1
  392. package/lib/types/utils/client.d.ts +0 -12
  393. package/lib/types/utils/client.d.ts.map +0 -1
  394. package/lib/types/utils/expand-vars.d.ts +0 -8
  395. package/lib/types/utils/expand-vars.d.ts.map +0 -1
  396. package/lib/types/utils/memory.d.ts +0 -8
  397. package/lib/types/utils/memory.d.ts.map +0 -1
  398. package/lib/types/utils/renditions.d.ts +0 -23
  399. package/lib/types/utils/renditions.d.ts.map +0 -1
  400. package/lib/types/utils/storage.d.ts +0 -16
  401. package/lib/types/utils/storage.d.ts.map +0 -1
  402. package/lib/types/utils/tokens.d.ts +0 -11
  403. package/lib/types/utils/tokens.d.ts.map +0 -1
  404. package/lib/types/vars.d.ts +0 -3
  405. package/lib/types/vars.d.ts.map +0 -1
  406. package/lib/types/workflows.d.ts +0 -8
  407. package/lib/types/workflows.d.ts.map +0 -1
  408. package/lib/workflows-bundle.js +0 -12908
  409. package/src/activities/identifyTextSections.ts +0 -71
@@ -1,410 +0,0 @@
1
- import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
2
- import { GetDocumentAnalysisCommand, StartDocumentAnalysisCommand, TextractClient } from "@aws-sdk/client-textract";
3
- import Papa from 'papaparse';
4
- export class TextractProcessor {
5
- textractClient;
6
- s3Client;
7
- fileKey;
8
- bucket;
9
- log;
10
- detectImages;
11
- /**
12
- * Whether or not to include confidence values in CSV output for tables.
13
- */
14
- includeConfidenceInTables;
15
- constructor({ fileKey, region, bucket, credentials, log, detectImages = false, includeConfidenceInTables = false // NEW default = false
16
- }) {
17
- this.fileKey = fileKey;
18
- this.bucket = bucket;
19
- this.log = log;
20
- this.detectImages = detectImages;
21
- this.includeConfidenceInTables = includeConfidenceInTables;
22
- this.textractClient = new TextractClient({
23
- region,
24
- credentials
25
- });
26
- this.s3Client = new S3Client({
27
- region,
28
- credentials
29
- });
30
- }
31
- getText(result, blocksMap) {
32
- let text = '';
33
- if (result.Relationships) {
34
- for (const relationship of result.Relationships) {
35
- if (relationship.Type === 'CHILD') {
36
- for (const childId of relationship.Ids || []) {
37
- const word = blocksMap[childId];
38
- if (word.BlockType === 'WORD') {
39
- const wordText = word.Text || '';
40
- // Example logic to quote numeric text with commas
41
- if (wordText.includes(',') &&
42
- wordText.replace(',', '').match(/^\d+$/)) {
43
- text += `"${wordText}" `;
44
- }
45
- else {
46
- text += `${wordText} `;
47
- }
48
- }
49
- if (word.BlockType === 'SELECTION_ELEMENT' &&
50
- word.SelectionStatus === 'SELECTED') {
51
- text += 'X ';
52
- }
53
- }
54
- }
55
- }
56
- }
57
- return text.trim();
58
- }
59
- isBlockInTable(block, blocksMap) {
60
- if (block.BlockType !== 'LINE') {
61
- return false;
62
- }
63
- if (block.Relationships) {
64
- for (const relationship of block.Relationships) {
65
- if (relationship.Type === 'CHILD') {
66
- for (const childId of relationship.Ids || []) {
67
- const wordBlock = blocksMap[childId];
68
- if (this.isWordInTableCell(wordBlock, blocksMap)) {
69
- return true;
70
- }
71
- }
72
- }
73
- }
74
- }
75
- return false;
76
- }
77
- isWordInTableCell(wordBlock, blocksMap) {
78
- // Check if the wordBlock is a descendant of any TABLE->CELL block
79
- for (const blockId in blocksMap) {
80
- const potentialTable = blocksMap[blockId];
81
- if (potentialTable.BlockType === 'TABLE' && potentialTable.Relationships) {
82
- for (const relationship of potentialTable.Relationships) {
83
- if (relationship.Type === 'CHILD') {
84
- for (const cellId of relationship.Ids || []) {
85
- const cell = blocksMap[cellId];
86
- if (cell.BlockType === 'CELL' && cell.Relationships) {
87
- for (const cellRel of cell.Relationships) {
88
- if (cellRel.Type === 'CHILD' &&
89
- cellRel.Ids?.includes(wordBlock.Id)) {
90
- return true;
91
- }
92
- }
93
- }
94
- }
95
- }
96
- }
97
- }
98
- }
99
- return false;
100
- }
101
- /**
102
- * NEW: Helper type to store row and column text along with confidence.
103
- */
104
- getRowsColumnsMap(tableResult, blocksMap) {
105
- const rows = [];
106
- tableResult.Relationships?.forEach(relationship => {
107
- if (relationship.Type === 'CHILD') {
108
- relationship.Ids?.forEach(childId => {
109
- const cell = blocksMap[childId];
110
- if (cell.BlockType === 'CELL') {
111
- const rowIndex = cell.RowIndex || 1;
112
- const colIndex = cell.ColumnIndex || 1;
113
- // Expand the array if needed
114
- if (!rows[rowIndex - 1]) {
115
- rows[rowIndex - 1] = [];
116
- }
117
- // Prepare cell text and confidence
118
- const text = this.getText(cell, blocksMap);
119
- const confidence = cell.Confidence || 0;
120
- // If there's a gap, fill it with placeholders
121
- // so that we can safely place text at colIndex - 1
122
- for (let i = rows[rowIndex - 1].length; i < colIndex - 1; i++) {
123
- rows[rowIndex - 1].push({ text: '', confidence: 0 });
124
- }
125
- rows[rowIndex - 1][colIndex - 1] = { text, confidence };
126
- }
127
- });
128
- }
129
- });
130
- return { rows };
131
- }
132
- generateTableCSV(tableResult, blocksMap, _tableIndex, _pageNumber) {
133
- const { rows } = this.getRowsColumnsMap(tableResult, blocksMap);
134
- let totalConfidence = 0;
135
- let cellCount = 0;
136
- // Prepare CSV data
137
- const csvData = [];
138
- for (const row of rows) {
139
- const rowData = [];
140
- for (const cell of row) {
141
- // Add to CSV
142
- rowData.push(cell.text.trim());
143
- // Accumulate confidence
144
- totalConfidence += cell.confidence;
145
- cellCount++;
146
- }
147
- csvData.push(rowData);
148
- }
149
- // Compute average confidence (or any other method you prefer)
150
- const tableConfidence = cellCount > 0 ? (totalConfidence / cellCount) : 0;
151
- // Convert to CSV
152
- const csv = Papa.unparse(csvData, {
153
- delimiter: ',',
154
- quotes: true,
155
- quoteChar: '"',
156
- escapeChar: '"',
157
- header: false,
158
- newline: '\n',
159
- skipEmptyLines: false
160
- });
161
- return { csv, tableConfidence };
162
- }
163
- async upload(fileBuf) {
164
- this.log.info('Uploading file to S3', { fileKey: this.fileKey });
165
- const command = new PutObjectCommand({
166
- Bucket: this.bucket,
167
- Key: this.fileKey,
168
- Body: fileBuf,
169
- });
170
- await this.s3Client.send(command);
171
- }
172
- async startAnalysis(s3Key) {
173
- const command = new StartDocumentAnalysisCommand({
174
- DocumentLocation: {
175
- S3Object: {
176
- Bucket: this.bucket,
177
- Name: s3Key
178
- }
179
- },
180
- FeatureTypes: ["TABLES"]
181
- });
182
- const response = await this.textractClient.send(command);
183
- return response.JobId;
184
- }
185
- async checkJobStatus(jobId) {
186
- const command = new GetDocumentAnalysisCommand({ JobId: jobId });
187
- const response = await this.textractClient.send(command);
188
- return response.JobStatus;
189
- }
190
- getImagePlaceholder(block) {
191
- const geometry = block.Geometry?.BoundingBox;
192
- if (!geometry)
193
- return '';
194
- const area = (geometry.Width || 0) * (geometry.Height || 0);
195
- if (area < 0.05)
196
- return ''; // skip small images
197
- const top = geometry.Top || 0;
198
- const left = geometry.Left || 0;
199
- let position = '';
200
- if (top < 0.3)
201
- position += 'TOP_';
202
- else if (top > 0.7)
203
- position += 'BOTTOM_';
204
- if (left < 0.3)
205
- position += 'LEFT';
206
- else if (left > 0.7)
207
- position += 'RIGHT';
208
- else
209
- position += 'CENTER';
210
- return `[IMAGE_${position}]\n`;
211
- }
212
- getIndentationLevel(block) {
213
- const left = block.Geometry?.BoundingBox?.Left || 0;
214
- if (left < 0.15)
215
- return 0;
216
- if (left < 0.25)
217
- return 1;
218
- return 2;
219
- }
220
- isLikelyHeader(block, prevBlock) {
221
- if (!prevBlock)
222
- return true;
223
- const gap = (block.Geometry?.BoundingBox?.Top || 0) -
224
- ((prevBlock.Geometry?.BoundingBox?.Top || 0) +
225
- (prevBlock.Geometry?.BoundingBox?.Height || 0));
226
- return gap > 0.03;
227
- }
228
- formatTextBlock(block, prevBlock) {
229
- const text = block.Text || '';
230
- const indentLevel = this.getIndentationLevel(block);
231
- const indent = ' '.repeat(indentLevel);
232
- if (this.isLikelyHeader(block, prevBlock)) {
233
- return `\n${indent}${text}\n`;
234
- }
235
- return `${indent}${text}\n`;
236
- }
237
- shouldMergeLines(prev, current) {
238
- const prevBottom = (prev.Geometry?.BoundingBox?.Top || 0)
239
- + (prev.Geometry?.BoundingBox?.Height || 0);
240
- const currentTop = current.Geometry?.BoundingBox?.Top || 0;
241
- const gap = currentTop - prevBottom;
242
- // For example, if gap < 0.02, treat them as contiguous
243
- if (gap < 0.02) {
244
- return true;
245
- }
246
- return false;
247
- }
248
- async processResults(jobId) {
249
- let nextToken;
250
- let allBlocks = [];
251
- do {
252
- const command = new GetDocumentAnalysisCommand({
253
- JobId: jobId,
254
- NextToken: nextToken
255
- });
256
- const response = await this.textractClient.send(command);
257
- allBlocks = allBlocks.concat(response.Blocks || []);
258
- nextToken = response.NextToken;
259
- } while (nextToken);
260
- // Create blocks map
261
- const blocksMap = {};
262
- for (const block of allBlocks) {
263
- blocksMap[block.Id] = block;
264
- }
265
- // We'll store each page's content in sequence
266
- const pageContents = [];
267
- let currentPage = null;
268
- // We'll keep track of a "current text block" that we're building
269
- let currentTextContent = "";
270
- let prevLineBlock = null;
271
- // Sort by page and vertical position
272
- allBlocks.sort((a, b) => {
273
- if (a.Page !== b.Page)
274
- return (a.Page || 0) - (b.Page || 0);
275
- return (a.Geometry?.BoundingBox?.Top || 0) - (b.Geometry?.BoundingBox?.Top || 0);
276
- });
277
- for (const block of allBlocks) {
278
- if (block.BlockType === 'PAGE') {
279
- // If we were building a text block, push it before starting a new page
280
- if (currentTextContent.trim().length > 0 && currentPage) {
281
- currentPage.blocks.push({
282
- type: 'text',
283
- content: currentTextContent
284
- });
285
- }
286
- if (currentPage) {
287
- pageContents.push(currentPage);
288
- }
289
- currentPage = {
290
- pageNumber: block.Page || 0,
291
- blocks: []
292
- };
293
- currentTextContent = "";
294
- prevLineBlock = null;
295
- }
296
- else if (currentPage && block.Page === currentPage.pageNumber) {
297
- // TABLE handling
298
- if (block.BlockType === 'TABLE') {
299
- // If there's a pending text block, push it first
300
- if (currentTextContent.trim().length > 0) {
301
- currentPage.blocks.push({
302
- type: 'text',
303
- content: currentTextContent
304
- });
305
- currentTextContent = "";
306
- }
307
- const { csv, tableConfidence } = this.generateTableCSV(block, blocksMap, currentPage.blocks.filter(b => b.type === 'table').length + 1, currentPage.pageNumber);
308
- currentPage.blocks.push({
309
- type: 'table',
310
- content: csv,
311
- confidence: tableConfidence
312
- });
313
- prevLineBlock = null;
314
- }
315
- // LINE handling (merge or start new)
316
- else if (block.BlockType === 'LINE' && !this.isBlockInTable(block, blocksMap)) {
317
- if (prevLineBlock && this.shouldMergeLines(prevLineBlock, block)) {
318
- // If we consider this line to be part of the same paragraph,
319
- // just append the text. We'll call formatTextBlock to get
320
- // indentation/header logic, but we won't add a leading newline.
321
- const formatted = this.formatTextBlock(block, prevLineBlock);
322
- // formatTextBlock might include a leading newline if isLikelyHeader = true
323
- // so you can strip it out if you want them truly "merged" into one paragraph:
324
- const mergedText = formatted.replace(/^\s*\n/, " ");
325
- currentTextContent += " " + mergedText.trim();
326
- }
327
- else {
328
- // If there's an existing text block, push it
329
- if (currentTextContent.trim().length > 0) {
330
- currentPage.blocks.push({
331
- type: 'text',
332
- content: currentTextContent
333
- });
334
- }
335
- // Start a new text block
336
- currentTextContent = this.formatTextBlock(block, prevLineBlock).trim();
337
- }
338
- prevLineBlock = block;
339
- }
340
- // IMAGES (if detectImages)
341
- else if (this.detectImages) {
342
- const geometry = block.Geometry?.BoundingBox;
343
- if (geometry && geometry.Width && geometry.Height) {
344
- const imagePlaceholder = this.getImagePlaceholder(block);
345
- if (imagePlaceholder) {
346
- // If there's a pending text block, push it first
347
- if (currentTextContent.trim().length > 0) {
348
- currentPage.blocks.push({
349
- type: 'text',
350
- content: currentTextContent
351
- });
352
- currentTextContent = "";
353
- }
354
- currentPage.blocks.push({
355
- type: 'image',
356
- content: imagePlaceholder,
357
- left: geometry.Left,
358
- top: geometry.Top,
359
- width: geometry.Width,
360
- height: geometry.Height
361
- });
362
- }
363
- }
364
- // No line update to prevLineBlock here
365
- }
366
- }
367
- }
368
- // Handle last page
369
- if (currentPage) {
370
- if (currentTextContent.trim().length > 0) {
371
- currentPage.blocks.push({
372
- type: 'text',
373
- content: currentTextContent
374
- });
375
- }
376
- pageContents.push(currentPage);
377
- }
378
- // Build final output
379
- let fullText = '';
380
- let imgNumber = 1;
381
- let tableNumber = 1;
382
- for (const page of pageContents) {
383
- fullText += `<page number="${page.pageNumber}">\n`;
384
- for (const block of page.blocks) {
385
- if (block.type === 'text') {
386
- fullText += `<text>\n${block.content}\n</text>\n\n`;
387
- }
388
- else if (block.type === 'table') {
389
- const confidenceAttr = block.confidence !== undefined && this.includeConfidenceInTables
390
- ? ` confidence="${block.confidence.toFixed(2)}"`
391
- : '';
392
- fullText += `<table number=${tableNumber++} type="csv" ${confidenceAttr}>\n`;
393
- fullText += `${block.content}\n`;
394
- fullText += `</table>\n\n`;
395
- }
396
- else if (block.type === 'image') {
397
- // Include geometry if you like
398
- const leftAttr = block.left ? ` left="${block.left.toFixed(4)}"` : '';
399
- const topAttr = block.top ? ` top="${block.top.toFixed(4)}"` : '';
400
- const widthAttr = block.width ? ` width="${block.width.toFixed(4)}"` : '';
401
- const heightAttr = block.height ? ` height="${block.height.toFixed(4)}"` : '';
402
- fullText += `<image id="${imgNumber++}" ${leftAttr}${topAttr}${widthAttr}${heightAttr}>\n${block.content.trim()}\n</image>\n\n`;
403
- }
404
- }
405
- fullText += `</page>\n\n`;
406
- }
407
- return fullText;
408
- }
409
- }
410
- //# sourceMappingURL=TextractProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextractProcessor.js","sourceRoot":"","sources":["../../../src/conversion/TextractProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,141 +0,0 @@
1
- import { log } from "@temporalio/activity";
2
- import { execFile as execFileCallback } from "child_process";
3
- import fs from "fs";
4
- import { file } from "tmp-promise";
5
- import { promisify } from "util";
6
- const execFile = promisify(execFileCallback);
7
- /**
8
- * Resizes an image to a maximum height or width using ImageMagick
9
- * with progressive loading when supported and colorspace correction
10
- * @param inputPath Input file path
11
- * @param max_hw Maximum height or width
12
- * @param format Output format
13
- * @param progressive Enable progressive loading for supported formats (defaults to true)
14
- * @param colorspaceCorrection Enable colorspace correction (defaults to true), not recommended for Q8 image magick.
15
- * @param colorspace Colorspace to use for processing ('RGB', 'LAB', 'LUV', 'sigmoidal') (defaults to 'RGB')
16
- * @returns Path to the resized image
17
- */
18
- export async function imageResizer(inputPath, max_hw, format, progressive = true, colorspaceCorrection = true, colorspace = 'RGB') {
19
- log.info(`[image-resizer] Resizing image: ${inputPath} to max_hw: ${max_hw}, format: ${format}, progressive: ${progressive}, colorspaceCorrection: ${colorspaceCorrection ? colorspace : 'disabled'}`);
20
- const allowedFormats = ["jpg", "jpeg", "png", "webp"];
21
- if (!format || format.trim() === "") {
22
- throw new Error(`Invalid format: ${format}.Supported : ${allowedFormats.join(", ")}`);
23
- }
24
- //check that max_hw is valid
25
- if (!Number.isInteger(max_hw) || max_hw <= 0) {
26
- throw new Error(`Invalid max_hw value: ${max_hw}`);
27
- }
28
- //check that inputPath exists
29
- if (!fs.existsSync(inputPath)) {
30
- throw new Error(`Input file does not exist: ${inputPath}`);
31
- }
32
- // Create a temporary file
33
- const { path: outputPath, cleanup } = await file({ postfix: `.${format}` });
34
- try {
35
- // Check if input file exists
36
- if (!fs.existsSync(inputPath)) {
37
- throw new Error(`Input file does not exist: ${inputPath}`);
38
- }
39
- // Validate max_hw
40
- if (!Number.isInteger(max_hw) || max_hw <= 0) {
41
- throw new Error(`Invalid max_hw value: ${max_hw}`);
42
- }
43
- // Progressive loading options
44
- let conversionOption = "";
45
- // Only add progressive option for formats that support it
46
- if (progressive) {
47
- // JPEG and some other formats support progressive loading
48
- const lowerFormat = format.toLowerCase();
49
- if (lowerFormat === "jpg" || lowerFormat === "jpeg") {
50
- conversionOption = "-interlace JPEG";
51
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
52
- }
53
- else if (lowerFormat === "png") {
54
- conversionOption = "-interlace PNG";
55
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
56
- }
57
- else if (lowerFormat === "gif") {
58
- conversionOption = "-interlace GIF";
59
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
60
- }
61
- }
62
- log.info(`Resizing image using ImageMagick: ${inputPath} -> ${outputPath}`);
63
- const command = `convert`;
64
- let args = [inputPath];
65
- // https://usage.imagemagick.org/filter/nicolas/#downsample
66
- // Add colorspace correction if enabled
67
- if (colorspaceCorrection) {
68
- switch (colorspace) {
69
- case 'RGB':
70
- // Linear light, recommended default
71
- // Convert from sRGB to linear RGB for processing
72
- args.push("-colorspace", "RGB");
73
- log.info("Using linear RGB colorspace for resize processing");
74
- break;
75
- case 'LAB':
76
- // Perceptual linear light
77
- // Use LAB colorspace which separates intensity from color
78
- // Better for avoiding color clipping and distortion
79
- args.push("-colorspace", "LAB");
80
- log.info("Using LAB colorspace for resize processing");
81
- break;
82
- case 'LUV':
83
- // Perceptual linear light
84
- // Alternative to LAB with perceptually uniform color deltas
85
- args.push("-colorspace", "LUV");
86
- log.info("Using LUV colorspace for resize processing");
87
- break;
88
- case 'sigmoidal':
89
- // Sigmoidal colorspace modification to reduce ringing artifacts
90
- args.push("-colorspace", "RGB");
91
- args.push("+sigmoidal-contrast", "6.5,50%");
92
- log.info("Using sigmoidal contrast modification for resize processing");
93
- break;
94
- }
95
- }
96
- // Add JPEG shrink-on-load optimization
97
- args.push("-define", `jpeg:size=${max_hw * 3}x${max_hw * 3}`);
98
- // Resize operation
99
- args.push("-resize", `${max_hw}x${max_hw}>`);
100
- // Restore colorspace after processing
101
- if (colorspaceCorrection) {
102
- switch (colorspace) {
103
- case 'RGB':
104
- case 'LAB':
105
- case 'LUV':
106
- // Convert back to sRGB for output
107
- args.push("-colorspace", "sRGB");
108
- break;
109
- case 'sigmoidal':
110
- // Restore from sigmoidal modification and convert to sRGB
111
- args.push("-sigmoidal-contrast", "6.5,50%");
112
- args.push("-colorspace", "sRGB");
113
- break;
114
- }
115
- }
116
- // Add progressive/interlace options
117
- if (conversionOption) {
118
- args.push(...conversionOption.split(" "));
119
- }
120
- // Output path
121
- args.push(outputPath);
122
- log.info(`ImageMagick command: ${command} ${args.join(" ")}`);
123
- const { stderr } = await execFile(command, args);
124
- if (stderr) {
125
- log.warn(`ImageMagick warning: ${stderr}`);
126
- }
127
- // Verify output exists and has content
128
- if (!fs.existsSync(outputPath) || fs.statSync(outputPath).size === 0) {
129
- throw new Error(`ImageMagick conversion failed: output file not created or empty`);
130
- }
131
- return outputPath;
132
- }
133
- catch (error) {
134
- // Clean up the temporary file
135
- await cleanup();
136
- const errorMessage = error instanceof Error ? error.message : String(error);
137
- log.error(`Image conversion failed: ${errorMessage}`);
138
- throw new Error(`Image conversion failed: ${errorMessage}`);
139
- }
140
- }
141
- //# sourceMappingURL=image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/conversion/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,SAAiB,EACjB,MAAc,EACd,MAAc,EACd,cAAuB,IAAI,EAC3B,uBAAgC,IAAI,EACpC,aAAkD,KAAK;IAEvD,GAAG,CAAC,IAAI,CAAC,mCAAmC,SAAS,eAAe,MAAM,aAAa,MAAM,kBAAkB,WAAW,2BAA2B,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEtD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,gBAAgB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,0BAA0B;IAC1B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC;QACD,6BAA6B;QAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,8BAA8B;QAC9B,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAE1B,0DAA0D;QAC1D,IAAI,WAAW,EAAE,CAAC;YACd,0DAA0D;YAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAClD,gBAAgB,GAAG,iBAAiB,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC/B,gBAAgB,GAAG,gBAAgB,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC/B,gBAAgB,GAAG,gBAAgB,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACxE,CAAC;QACL,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,qCAAqC,SAAS,OAAO,UAAU,EAAE,CAAC,CAAC;QAE5E,MAAM,OAAO,GAAG,SAAS,CAAA;QACzB,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,2DAA2D;QAC3D,uCAAuC;QACvC,IAAI,oBAAoB,EAAE,CAAC;YACvB,QAAQ,UAAU,EAAE,CAAC;gBACjB,KAAK,KAAK;oBACN,oCAAoC;oBACpC,iDAAiD;oBACjD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBAChC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;oBAC9D,MAAM;gBACV,KAAK,KAAK;oBACN,0BAA0B;oBAC1B,0DAA0D;oBAC1D,oDAAoD;oBACpD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBAChC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBACvD,MAAM;gBACV,KAAK,KAAK;oBACN,0BAA0B;oBAC1B,4DAA4D;oBAC5D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBAChC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBACvD,MAAM;gBACV,KAAK,WAAW;oBACZ,gEAAgE;oBAChE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBAChC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;oBAC5C,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;oBACxE,MAAM;YACd,CAAC;QACL,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QAE9D,mBAAmB;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;QAE7C,sCAAsC;QACtC,IAAI,oBAAoB,EAAE,CAAC;YACvB,QAAQ,UAAU,EAAE,CAAC;gBACjB,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK;oBACN,kCAAkC;oBAClC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBACjC,MAAM;gBACV,KAAK,WAAW;oBACZ,0DAA0D;oBAC1D,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBACjC,MAAM;YACd,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,IAAI,gBAAgB,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtB,GAAG,CAAC,IAAI,CAAC,wBAAwB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE9D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjD,IAAI,MAAM,EAAE,CAAC;YACT,GAAG,CAAC,IAAI,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,8BAA8B;QAC9B,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,GAAG,CAAC,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IAChE,CAAC;AACL,CAAC"}
@@ -1,36 +0,0 @@
1
- import { log } from "@temporalio/activity";
2
- import { spawn } from "child_process";
3
- import fs from "fs";
4
- import tmp from "tmp";
5
- export function markdownWithMarkitdown(buffer, ext) {
6
- const inputFile = tmp.fileSync({ postfix: ext });
7
- const targetFileName = tmp.tmpNameSync({ postfix: ".md" });
8
- fs.writeSync(inputFile.fd, buffer);
9
- return new Promise((resolve, reject) => {
10
- const tool = "markitdown";
11
- log.info(`Converting document to markdown with ${tool}`, { inputFile: inputFile.name, targetFileName });
12
- const command = spawn(tool, [inputFile.name, "-o", targetFileName]);
13
- command.on("exit", function (code) {
14
- if (code) {
15
- reject(new Error(`${tool} exited with code ${code}`));
16
- }
17
- });
18
- command.on("close", function (code) {
19
- if (code) {
20
- reject(new Error(`${tool} exited with code ${code}`));
21
- }
22
- else {
23
- return fs.readFile(targetFileName, "utf8", (err, data) => {
24
- if (err) {
25
- reject(err);
26
- }
27
- return resolve(data);
28
- });
29
- }
30
- });
31
- command.on("error", (err) => {
32
- reject(err);
33
- });
34
- });
35
- }
36
- //# sourceMappingURL=markitdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markitdown.js","sourceRoot":"","sources":["../../../src/conversion/markitdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,GAAY;IAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3D,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,YAAY,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,wCAAwC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAExG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAEpE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,IAAI;YAC9B,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACJ,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACrD,IAAI,GAAG,EAAE,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC;oBACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}