@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,417 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TextractProcessor = void 0;
7
- const client_s3_1 = require("@aws-sdk/client-s3");
8
- const client_textract_1 = require("@aws-sdk/client-textract");
9
- const papaparse_1 = __importDefault(require("papaparse"));
10
- class TextractProcessor {
11
- textractClient;
12
- s3Client;
13
- fileKey;
14
- bucket;
15
- log;
16
- detectImages;
17
- /**
18
- * Whether or not to include confidence values in CSV output for tables.
19
- */
20
- includeConfidenceInTables;
21
- constructor({ fileKey, region, bucket, credentials, log, detectImages = false, includeConfidenceInTables = false // NEW default = false
22
- }) {
23
- this.fileKey = fileKey;
24
- this.bucket = bucket;
25
- this.log = log;
26
- this.detectImages = detectImages;
27
- this.includeConfidenceInTables = includeConfidenceInTables;
28
- this.textractClient = new client_textract_1.TextractClient({
29
- region,
30
- credentials
31
- });
32
- this.s3Client = new client_s3_1.S3Client({
33
- region,
34
- credentials
35
- });
36
- }
37
- getText(result, blocksMap) {
38
- let text = '';
39
- if (result.Relationships) {
40
- for (const relationship of result.Relationships) {
41
- if (relationship.Type === 'CHILD') {
42
- for (const childId of relationship.Ids || []) {
43
- const word = blocksMap[childId];
44
- if (word.BlockType === 'WORD') {
45
- const wordText = word.Text || '';
46
- // Example logic to quote numeric text with commas
47
- if (wordText.includes(',') &&
48
- wordText.replace(',', '').match(/^\d+$/)) {
49
- text += `"${wordText}" `;
50
- }
51
- else {
52
- text += `${wordText} `;
53
- }
54
- }
55
- if (word.BlockType === 'SELECTION_ELEMENT' &&
56
- word.SelectionStatus === 'SELECTED') {
57
- text += 'X ';
58
- }
59
- }
60
- }
61
- }
62
- }
63
- return text.trim();
64
- }
65
- isBlockInTable(block, blocksMap) {
66
- if (block.BlockType !== 'LINE') {
67
- return false;
68
- }
69
- if (block.Relationships) {
70
- for (const relationship of block.Relationships) {
71
- if (relationship.Type === 'CHILD') {
72
- for (const childId of relationship.Ids || []) {
73
- const wordBlock = blocksMap[childId];
74
- if (this.isWordInTableCell(wordBlock, blocksMap)) {
75
- return true;
76
- }
77
- }
78
- }
79
- }
80
- }
81
- return false;
82
- }
83
- isWordInTableCell(wordBlock, blocksMap) {
84
- // Check if the wordBlock is a descendant of any TABLE->CELL block
85
- for (const blockId in blocksMap) {
86
- const potentialTable = blocksMap[blockId];
87
- if (potentialTable.BlockType === 'TABLE' && potentialTable.Relationships) {
88
- for (const relationship of potentialTable.Relationships) {
89
- if (relationship.Type === 'CHILD') {
90
- for (const cellId of relationship.Ids || []) {
91
- const cell = blocksMap[cellId];
92
- if (cell.BlockType === 'CELL' && cell.Relationships) {
93
- for (const cellRel of cell.Relationships) {
94
- if (cellRel.Type === 'CHILD' &&
95
- cellRel.Ids?.includes(wordBlock.Id)) {
96
- return true;
97
- }
98
- }
99
- }
100
- }
101
- }
102
- }
103
- }
104
- }
105
- return false;
106
- }
107
- /**
108
- * NEW: Helper type to store row and column text along with confidence.
109
- */
110
- getRowsColumnsMap(tableResult, blocksMap) {
111
- const rows = [];
112
- tableResult.Relationships?.forEach(relationship => {
113
- if (relationship.Type === 'CHILD') {
114
- relationship.Ids?.forEach(childId => {
115
- const cell = blocksMap[childId];
116
- if (cell.BlockType === 'CELL') {
117
- const rowIndex = cell.RowIndex || 1;
118
- const colIndex = cell.ColumnIndex || 1;
119
- // Expand the array if needed
120
- if (!rows[rowIndex - 1]) {
121
- rows[rowIndex - 1] = [];
122
- }
123
- // Prepare cell text and confidence
124
- const text = this.getText(cell, blocksMap);
125
- const confidence = cell.Confidence || 0;
126
- // If there's a gap, fill it with placeholders
127
- // so that we can safely place text at colIndex - 1
128
- for (let i = rows[rowIndex - 1].length; i < colIndex - 1; i++) {
129
- rows[rowIndex - 1].push({ text: '', confidence: 0 });
130
- }
131
- rows[rowIndex - 1][colIndex - 1] = { text, confidence };
132
- }
133
- });
134
- }
135
- });
136
- return { rows };
137
- }
138
- generateTableCSV(tableResult, blocksMap, _tableIndex, _pageNumber) {
139
- const { rows } = this.getRowsColumnsMap(tableResult, blocksMap);
140
- let totalConfidence = 0;
141
- let cellCount = 0;
142
- // Prepare CSV data
143
- const csvData = [];
144
- for (const row of rows) {
145
- const rowData = [];
146
- for (const cell of row) {
147
- // Add to CSV
148
- rowData.push(cell.text.trim());
149
- // Accumulate confidence
150
- totalConfidence += cell.confidence;
151
- cellCount++;
152
- }
153
- csvData.push(rowData);
154
- }
155
- // Compute average confidence (or any other method you prefer)
156
- const tableConfidence = cellCount > 0 ? (totalConfidence / cellCount) : 0;
157
- // Convert to CSV
158
- const csv = papaparse_1.default.unparse(csvData, {
159
- delimiter: ',',
160
- quotes: true,
161
- quoteChar: '"',
162
- escapeChar: '"',
163
- header: false,
164
- newline: '\n',
165
- skipEmptyLines: false
166
- });
167
- return { csv, tableConfidence };
168
- }
169
- async upload(fileBuf) {
170
- this.log.info('Uploading file to S3', { fileKey: this.fileKey });
171
- const command = new client_s3_1.PutObjectCommand({
172
- Bucket: this.bucket,
173
- Key: this.fileKey,
174
- Body: fileBuf,
175
- });
176
- await this.s3Client.send(command);
177
- }
178
- async startAnalysis(s3Key) {
179
- const command = new client_textract_1.StartDocumentAnalysisCommand({
180
- DocumentLocation: {
181
- S3Object: {
182
- Bucket: this.bucket,
183
- Name: s3Key
184
- }
185
- },
186
- FeatureTypes: ["TABLES"]
187
- });
188
- const response = await this.textractClient.send(command);
189
- return response.JobId;
190
- }
191
- async checkJobStatus(jobId) {
192
- const command = new client_textract_1.GetDocumentAnalysisCommand({ JobId: jobId });
193
- const response = await this.textractClient.send(command);
194
- return response.JobStatus;
195
- }
196
- getImagePlaceholder(block) {
197
- const geometry = block.Geometry?.BoundingBox;
198
- if (!geometry)
199
- return '';
200
- const area = (geometry.Width || 0) * (geometry.Height || 0);
201
- if (area < 0.05)
202
- return ''; // skip small images
203
- const top = geometry.Top || 0;
204
- const left = geometry.Left || 0;
205
- let position = '';
206
- if (top < 0.3)
207
- position += 'TOP_';
208
- else if (top > 0.7)
209
- position += 'BOTTOM_';
210
- if (left < 0.3)
211
- position += 'LEFT';
212
- else if (left > 0.7)
213
- position += 'RIGHT';
214
- else
215
- position += 'CENTER';
216
- return `[IMAGE_${position}]\n`;
217
- }
218
- getIndentationLevel(block) {
219
- const left = block.Geometry?.BoundingBox?.Left || 0;
220
- if (left < 0.15)
221
- return 0;
222
- if (left < 0.25)
223
- return 1;
224
- return 2;
225
- }
226
- isLikelyHeader(block, prevBlock) {
227
- if (!prevBlock)
228
- return true;
229
- const gap = (block.Geometry?.BoundingBox?.Top || 0) -
230
- ((prevBlock.Geometry?.BoundingBox?.Top || 0) +
231
- (prevBlock.Geometry?.BoundingBox?.Height || 0));
232
- return gap > 0.03;
233
- }
234
- formatTextBlock(block, prevBlock) {
235
- const text = block.Text || '';
236
- const indentLevel = this.getIndentationLevel(block);
237
- const indent = ' '.repeat(indentLevel);
238
- if (this.isLikelyHeader(block, prevBlock)) {
239
- return `\n${indent}${text}\n`;
240
- }
241
- return `${indent}${text}\n`;
242
- }
243
- shouldMergeLines(prev, current) {
244
- const prevBottom = (prev.Geometry?.BoundingBox?.Top || 0)
245
- + (prev.Geometry?.BoundingBox?.Height || 0);
246
- const currentTop = current.Geometry?.BoundingBox?.Top || 0;
247
- const gap = currentTop - prevBottom;
248
- // For example, if gap < 0.02, treat them as contiguous
249
- if (gap < 0.02) {
250
- return true;
251
- }
252
- return false;
253
- }
254
- async processResults(jobId) {
255
- let nextToken;
256
- let allBlocks = [];
257
- do {
258
- const command = new client_textract_1.GetDocumentAnalysisCommand({
259
- JobId: jobId,
260
- NextToken: nextToken
261
- });
262
- const response = await this.textractClient.send(command);
263
- allBlocks = allBlocks.concat(response.Blocks || []);
264
- nextToken = response.NextToken;
265
- } while (nextToken);
266
- // Create blocks map
267
- const blocksMap = {};
268
- for (const block of allBlocks) {
269
- blocksMap[block.Id] = block;
270
- }
271
- // We'll store each page's content in sequence
272
- const pageContents = [];
273
- let currentPage = null;
274
- // We'll keep track of a "current text block" that we're building
275
- let currentTextContent = "";
276
- let prevLineBlock = null;
277
- // Sort by page and vertical position
278
- allBlocks.sort((a, b) => {
279
- if (a.Page !== b.Page)
280
- return (a.Page || 0) - (b.Page || 0);
281
- return (a.Geometry?.BoundingBox?.Top || 0) - (b.Geometry?.BoundingBox?.Top || 0);
282
- });
283
- for (const block of allBlocks) {
284
- if (block.BlockType === 'PAGE') {
285
- // If we were building a text block, push it before starting a new page
286
- if (currentTextContent.trim().length > 0 && currentPage) {
287
- currentPage.blocks.push({
288
- type: 'text',
289
- content: currentTextContent
290
- });
291
- }
292
- if (currentPage) {
293
- pageContents.push(currentPage);
294
- }
295
- currentPage = {
296
- pageNumber: block.Page || 0,
297
- blocks: []
298
- };
299
- currentTextContent = "";
300
- prevLineBlock = null;
301
- }
302
- else if (currentPage && block.Page === currentPage.pageNumber) {
303
- // TABLE handling
304
- if (block.BlockType === 'TABLE') {
305
- // If there's a pending text block, push it first
306
- if (currentTextContent.trim().length > 0) {
307
- currentPage.blocks.push({
308
- type: 'text',
309
- content: currentTextContent
310
- });
311
- currentTextContent = "";
312
- }
313
- const { csv, tableConfidence } = this.generateTableCSV(block, blocksMap, currentPage.blocks.filter(b => b.type === 'table').length + 1, currentPage.pageNumber);
314
- currentPage.blocks.push({
315
- type: 'table',
316
- content: csv,
317
- confidence: tableConfidence
318
- });
319
- prevLineBlock = null;
320
- }
321
- // LINE handling (merge or start new)
322
- else if (block.BlockType === 'LINE' && !this.isBlockInTable(block, blocksMap)) {
323
- if (prevLineBlock && this.shouldMergeLines(prevLineBlock, block)) {
324
- // If we consider this line to be part of the same paragraph,
325
- // just append the text. We'll call formatTextBlock to get
326
- // indentation/header logic, but we won't add a leading newline.
327
- const formatted = this.formatTextBlock(block, prevLineBlock);
328
- // formatTextBlock might include a leading newline if isLikelyHeader = true
329
- // so you can strip it out if you want them truly "merged" into one paragraph:
330
- const mergedText = formatted.replace(/^\s*\n/, " ");
331
- currentTextContent += " " + mergedText.trim();
332
- }
333
- else {
334
- // If there's an existing text block, push it
335
- if (currentTextContent.trim().length > 0) {
336
- currentPage.blocks.push({
337
- type: 'text',
338
- content: currentTextContent
339
- });
340
- }
341
- // Start a new text block
342
- currentTextContent = this.formatTextBlock(block, prevLineBlock).trim();
343
- }
344
- prevLineBlock = block;
345
- }
346
- // IMAGES (if detectImages)
347
- else if (this.detectImages) {
348
- const geometry = block.Geometry?.BoundingBox;
349
- if (geometry && geometry.Width && geometry.Height) {
350
- const imagePlaceholder = this.getImagePlaceholder(block);
351
- if (imagePlaceholder) {
352
- // If there's a pending text block, push it first
353
- if (currentTextContent.trim().length > 0) {
354
- currentPage.blocks.push({
355
- type: 'text',
356
- content: currentTextContent
357
- });
358
- currentTextContent = "";
359
- }
360
- currentPage.blocks.push({
361
- type: 'image',
362
- content: imagePlaceholder,
363
- left: geometry.Left,
364
- top: geometry.Top,
365
- width: geometry.Width,
366
- height: geometry.Height
367
- });
368
- }
369
- }
370
- // No line update to prevLineBlock here
371
- }
372
- }
373
- }
374
- // Handle last page
375
- if (currentPage) {
376
- if (currentTextContent.trim().length > 0) {
377
- currentPage.blocks.push({
378
- type: 'text',
379
- content: currentTextContent
380
- });
381
- }
382
- pageContents.push(currentPage);
383
- }
384
- // Build final output
385
- let fullText = '';
386
- let imgNumber = 1;
387
- let tableNumber = 1;
388
- for (const page of pageContents) {
389
- fullText += `<page number="${page.pageNumber}">\n`;
390
- for (const block of page.blocks) {
391
- if (block.type === 'text') {
392
- fullText += `<text>\n${block.content}\n</text>\n\n`;
393
- }
394
- else if (block.type === 'table') {
395
- const confidenceAttr = block.confidence !== undefined && this.includeConfidenceInTables
396
- ? ` confidence="${block.confidence.toFixed(2)}"`
397
- : '';
398
- fullText += `<table number=${tableNumber++} type="csv" ${confidenceAttr}>\n`;
399
- fullText += `${block.content}\n`;
400
- fullText += `</table>\n\n`;
401
- }
402
- else if (block.type === 'image') {
403
- // Include geometry if you like
404
- const leftAttr = block.left ? ` left="${block.left.toFixed(4)}"` : '';
405
- const topAttr = block.top ? ` top="${block.top.toFixed(4)}"` : '';
406
- const widthAttr = block.width ? ` width="${block.width.toFixed(4)}"` : '';
407
- const heightAttr = block.height ? ` height="${block.height.toFixed(4)}"` : '';
408
- fullText += `<image id="${imgNumber++}" ${leftAttr}${topAttr}${widthAttr}${heightAttr}>\n${block.content.trim()}\n</image>\n\n`;
409
- }
410
- }
411
- fullText += `</page>\n\n`;
412
- }
413
- return fullText;
414
- }
415
- }
416
- exports.TextractProcessor = TextractProcessor;
417
- //# 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,147 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.imageResizer = imageResizer;
7
- const activity_1 = require("@temporalio/activity");
8
- const child_process_1 = require("child_process");
9
- const fs_1 = __importDefault(require("fs"));
10
- const tmp_promise_1 = require("tmp-promise");
11
- const util_1 = require("util");
12
- const execFile = (0, util_1.promisify)(child_process_1.execFile);
13
- /**
14
- * Resizes an image to a maximum height or width using ImageMagick
15
- * with progressive loading when supported and colorspace correction
16
- * @param inputPath Input file path
17
- * @param max_hw Maximum height or width
18
- * @param format Output format
19
- * @param progressive Enable progressive loading for supported formats (defaults to true)
20
- * @param colorspaceCorrection Enable colorspace correction (defaults to true), not recommended for Q8 image magick.
21
- * @param colorspace Colorspace to use for processing ('RGB', 'LAB', 'LUV', 'sigmoidal') (defaults to 'RGB')
22
- * @returns Path to the resized image
23
- */
24
- async function imageResizer(inputPath, max_hw, format, progressive = true, colorspaceCorrection = true, colorspace = 'RGB') {
25
- activity_1.log.info(`[image-resizer] Resizing image: ${inputPath} to max_hw: ${max_hw}, format: ${format}, progressive: ${progressive}, colorspaceCorrection: ${colorspaceCorrection ? colorspace : 'disabled'}`);
26
- const allowedFormats = ["jpg", "jpeg", "png", "webp"];
27
- if (!format || format.trim() === "") {
28
- throw new Error(`Invalid format: ${format}.Supported : ${allowedFormats.join(", ")}`);
29
- }
30
- //check that max_hw is valid
31
- if (!Number.isInteger(max_hw) || max_hw <= 0) {
32
- throw new Error(`Invalid max_hw value: ${max_hw}`);
33
- }
34
- //check that inputPath exists
35
- if (!fs_1.default.existsSync(inputPath)) {
36
- throw new Error(`Input file does not exist: ${inputPath}`);
37
- }
38
- // Create a temporary file
39
- const { path: outputPath, cleanup } = await (0, tmp_promise_1.file)({ postfix: `.${format}` });
40
- try {
41
- // Check if input file exists
42
- if (!fs_1.default.existsSync(inputPath)) {
43
- throw new Error(`Input file does not exist: ${inputPath}`);
44
- }
45
- // Validate max_hw
46
- if (!Number.isInteger(max_hw) || max_hw <= 0) {
47
- throw new Error(`Invalid max_hw value: ${max_hw}`);
48
- }
49
- // Progressive loading options
50
- let conversionOption = "";
51
- // Only add progressive option for formats that support it
52
- if (progressive) {
53
- // JPEG and some other formats support progressive loading
54
- const lowerFormat = format.toLowerCase();
55
- if (lowerFormat === "jpg" || lowerFormat === "jpeg") {
56
- conversionOption = "-interlace JPEG";
57
- activity_1.log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
58
- }
59
- else if (lowerFormat === "png") {
60
- conversionOption = "-interlace PNG";
61
- activity_1.log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
62
- }
63
- else if (lowerFormat === "gif") {
64
- conversionOption = "-interlace GIF";
65
- activity_1.log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
66
- }
67
- }
68
- activity_1.log.info(`Resizing image using ImageMagick: ${inputPath} -> ${outputPath}`);
69
- const command = `convert`;
70
- let args = [inputPath];
71
- // https://usage.imagemagick.org/filter/nicolas/#downsample
72
- // Add colorspace correction if enabled
73
- if (colorspaceCorrection) {
74
- switch (colorspace) {
75
- case 'RGB':
76
- // Linear light, recommended default
77
- // Convert from sRGB to linear RGB for processing
78
- args.push("-colorspace", "RGB");
79
- activity_1.log.info("Using linear RGB colorspace for resize processing");
80
- break;
81
- case 'LAB':
82
- // Perceptual linear light
83
- // Use LAB colorspace which separates intensity from color
84
- // Better for avoiding color clipping and distortion
85
- args.push("-colorspace", "LAB");
86
- activity_1.log.info("Using LAB colorspace for resize processing");
87
- break;
88
- case 'LUV':
89
- // Perceptual linear light
90
- // Alternative to LAB with perceptually uniform color deltas
91
- args.push("-colorspace", "LUV");
92
- activity_1.log.info("Using LUV colorspace for resize processing");
93
- break;
94
- case 'sigmoidal':
95
- // Sigmoidal colorspace modification to reduce ringing artifacts
96
- args.push("-colorspace", "RGB");
97
- args.push("+sigmoidal-contrast", "6.5,50%");
98
- activity_1.log.info("Using sigmoidal contrast modification for resize processing");
99
- break;
100
- }
101
- }
102
- // Add JPEG shrink-on-load optimization
103
- args.push("-define", `jpeg:size=${max_hw * 3}x${max_hw * 3}`);
104
- // Resize operation
105
- args.push("-resize", `${max_hw}x${max_hw}>`);
106
- // Restore colorspace after processing
107
- if (colorspaceCorrection) {
108
- switch (colorspace) {
109
- case 'RGB':
110
- case 'LAB':
111
- case 'LUV':
112
- // Convert back to sRGB for output
113
- args.push("-colorspace", "sRGB");
114
- break;
115
- case 'sigmoidal':
116
- // Restore from sigmoidal modification and convert to sRGB
117
- args.push("-sigmoidal-contrast", "6.5,50%");
118
- args.push("-colorspace", "sRGB");
119
- break;
120
- }
121
- }
122
- // Add progressive/interlace options
123
- if (conversionOption) {
124
- args.push(...conversionOption.split(" "));
125
- }
126
- // Output path
127
- args.push(outputPath);
128
- activity_1.log.info(`ImageMagick command: ${command} ${args.join(" ")}`);
129
- const { stderr } = await execFile(command, args);
130
- if (stderr) {
131
- activity_1.log.warn(`ImageMagick warning: ${stderr}`);
132
- }
133
- // Verify output exists and has content
134
- if (!fs_1.default.existsSync(outputPath) || fs_1.default.statSync(outputPath).size === 0) {
135
- throw new Error(`ImageMagick conversion failed: output file not created or empty`);
136
- }
137
- return outputPath;
138
- }
139
- catch (error) {
140
- // Clean up the temporary file
141
- await cleanup();
142
- const errorMessage = error instanceof Error ? error.message : String(error);
143
- activity_1.log.error(`Image conversion failed: ${errorMessage}`);
144
- throw new Error(`Image conversion failed: ${errorMessage}`);
145
- }
146
- }
147
- //# sourceMappingURL=image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/conversion/image.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.markdownWithMarkitdown = markdownWithMarkitdown;
7
- const activity_1 = require("@temporalio/activity");
8
- const child_process_1 = require("child_process");
9
- const fs_1 = __importDefault(require("fs"));
10
- const tmp_1 = __importDefault(require("tmp"));
11
- function markdownWithMarkitdown(buffer, ext) {
12
- const inputFile = tmp_1.default.fileSync({ postfix: ext });
13
- const targetFileName = tmp_1.default.tmpNameSync({ postfix: ".md" });
14
- fs_1.default.writeSync(inputFile.fd, buffer);
15
- return new Promise((resolve, reject) => {
16
- const tool = "markitdown";
17
- activity_1.log.info(`Converting document to markdown with ${tool}`, { inputFile: inputFile.name, targetFileName });
18
- const command = (0, child_process_1.spawn)(tool, [inputFile.name, "-o", targetFileName]);
19
- command.on("exit", function (code) {
20
- if (code) {
21
- reject(new Error(`${tool} exited with code ${code}`));
22
- }
23
- });
24
- command.on("close", function (code) {
25
- if (code) {
26
- reject(new Error(`${tool} exited with code ${code}`));
27
- }
28
- else {
29
- return fs_1.default.readFile(targetFileName, "utf8", (err, data) => {
30
- if (err) {
31
- reject(err);
32
- }
33
- return resolve(data);
34
- });
35
- }
36
- });
37
- command.on("error", (err) => {
38
- reject(err);
39
- });
40
- });
41
- }
42
- //# sourceMappingURL=markitdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markitdown.js","sourceRoot":"","sources":["../../../src/conversion/markitdown.ts"],"names":[],"mappings":";;;;;AAKA,wDAmCC;AAxCD,mDAA2C;AAC3C,iDAAsC;AACtC,4CAAoB;AACpB,8CAAsB;AAEtB,SAAgB,sBAAsB,CAAC,MAAc,EAAE,GAAY;IAC/D,MAAM,SAAS,GAAG,aAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,aAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3D,YAAE,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,cAAG,CAAC,IAAI,CAAC,wCAAwC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAExG,MAAM,OAAO,GAAG,IAAA,qBAAK,EAAC,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,YAAE,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"}