@transloadit/node 4.7.6 → 4.7.7

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 (463) hide show
  1. package/dist/alphalib/assembly-linter.js +1 -1
  2. package/dist/alphalib/assembly-linter.js.map +1 -1
  3. package/dist/alphalib/stepParsing.js +2 -2
  4. package/dist/alphalib/stepParsing.js.map +1 -1
  5. package/dist/alphalib/types/assemblyReplay.d.ts +2 -7860
  6. package/dist/alphalib/types/assemblyReplay.d.ts.map +1 -1
  7. package/dist/alphalib/types/assemblyReplayNotification.d.ts +2 -7860
  8. package/dist/alphalib/types/assemblyReplayNotification.d.ts.map +1 -1
  9. package/dist/alphalib/types/assemblyStatus.d.ts +4807 -298
  10. package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
  11. package/dist/alphalib/types/assemblyStatus.js +36 -1
  12. package/dist/alphalib/types/assemblyStatus.js.map +1 -1
  13. package/dist/alphalib/types/robots/_index.d.ts +903 -72620
  14. package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
  15. package/dist/alphalib/types/robots/_index.js +62 -11
  16. package/dist/alphalib/types/robots/_index.js.map +1 -1
  17. package/dist/alphalib/types/robots/_instructions-primitives.d.ts +41 -10
  18. package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
  19. package/dist/alphalib/types/robots/_instructions-primitives.js +89 -3
  20. package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
  21. package/dist/alphalib/types/robots/ai-chat.d.ts +33 -0
  22. package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
  23. package/dist/alphalib/types/robots/ai-chat.js +28 -5
  24. package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
  25. package/dist/alphalib/types/robots/assembly-savejson.d.ts.map +1 -1
  26. package/dist/alphalib/types/robots/assembly-savejson.js +8 -0
  27. package/dist/alphalib/types/robots/assembly-savejson.js.map +1 -1
  28. package/dist/alphalib/types/robots/audio-artwork.d.ts.map +1 -1
  29. package/dist/alphalib/types/robots/audio-artwork.js +4 -5
  30. package/dist/alphalib/types/robots/audio-artwork.js.map +1 -1
  31. package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
  32. package/dist/alphalib/types/robots/audio-concat.js +1 -2
  33. package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
  34. package/dist/alphalib/types/robots/audio-encode.d.ts.map +1 -1
  35. package/dist/alphalib/types/robots/audio-encode.js +1 -2
  36. package/dist/alphalib/types/robots/audio-encode.js.map +1 -1
  37. package/dist/alphalib/types/robots/audio-loop.d.ts.map +1 -1
  38. package/dist/alphalib/types/robots/audio-loop.js +1 -2
  39. package/dist/alphalib/types/robots/audio-loop.js.map +1 -1
  40. package/dist/alphalib/types/robots/audio-merge.d.ts.map +1 -1
  41. package/dist/alphalib/types/robots/audio-merge.js +1 -2
  42. package/dist/alphalib/types/robots/audio-merge.js.map +1 -1
  43. package/dist/alphalib/types/robots/audio-split.d.ts +2936 -0
  44. package/dist/alphalib/types/robots/audio-split.d.ts.map +1 -0
  45. package/dist/alphalib/types/robots/audio-split.js +88 -0
  46. package/dist/alphalib/types/robots/audio-split.js.map +1 -0
  47. package/dist/alphalib/types/robots/audio-waveform.d.ts +92 -6
  48. package/dist/alphalib/types/robots/audio-waveform.d.ts.map +1 -1
  49. package/dist/alphalib/types/robots/audio-waveform.js +72 -6
  50. package/dist/alphalib/types/robots/audio-waveform.js.map +1 -1
  51. package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
  52. package/dist/alphalib/types/robots/azure-import.js +0 -1
  53. package/dist/alphalib/types/robots/azure-import.js.map +1 -1
  54. package/dist/alphalib/types/robots/azure-store.d.ts.map +1 -1
  55. package/dist/alphalib/types/robots/azure-store.js +0 -1
  56. package/dist/alphalib/types/robots/azure-store.js.map +1 -1
  57. package/dist/alphalib/types/robots/backblaze-import.d.ts.map +1 -1
  58. package/dist/alphalib/types/robots/backblaze-import.js +0 -1
  59. package/dist/alphalib/types/robots/backblaze-import.js.map +1 -1
  60. package/dist/alphalib/types/robots/backblaze-store.d.ts.map +1 -1
  61. package/dist/alphalib/types/robots/backblaze-store.js +0 -1
  62. package/dist/alphalib/types/robots/backblaze-store.js.map +1 -1
  63. package/dist/alphalib/types/robots/box-import.d.ts +150 -0
  64. package/dist/alphalib/types/robots/box-import.d.ts.map +1 -0
  65. package/dist/alphalib/types/robots/box-import.js +63 -0
  66. package/dist/alphalib/types/robots/box-import.js.map +1 -0
  67. package/dist/alphalib/types/robots/box-store.d.ts +455 -0
  68. package/dist/alphalib/types/robots/box-store.d.ts.map +1 -0
  69. package/dist/alphalib/types/robots/box-store.js +66 -0
  70. package/dist/alphalib/types/robots/box-store.js.map +1 -0
  71. package/dist/alphalib/types/robots/cloudfiles-import.d.ts.map +1 -1
  72. package/dist/alphalib/types/robots/cloudfiles-import.js +0 -1
  73. package/dist/alphalib/types/robots/cloudfiles-import.js.map +1 -1
  74. package/dist/alphalib/types/robots/cloudfiles-store.d.ts.map +1 -1
  75. package/dist/alphalib/types/robots/cloudfiles-store.js +0 -1
  76. package/dist/alphalib/types/robots/cloudfiles-store.js.map +1 -1
  77. package/dist/alphalib/types/robots/cloudflare-import.d.ts.map +1 -1
  78. package/dist/alphalib/types/robots/cloudflare-import.js +0 -1
  79. package/dist/alphalib/types/robots/cloudflare-import.js.map +1 -1
  80. package/dist/alphalib/types/robots/cloudflare-store.d.ts.map +1 -1
  81. package/dist/alphalib/types/robots/cloudflare-store.js +0 -1
  82. package/dist/alphalib/types/robots/cloudflare-store.js.map +1 -1
  83. package/dist/alphalib/types/robots/digitalocean-import.d.ts.map +1 -1
  84. package/dist/alphalib/types/robots/digitalocean-import.js +0 -1
  85. package/dist/alphalib/types/robots/digitalocean-import.js.map +1 -1
  86. package/dist/alphalib/types/robots/digitalocean-store.d.ts.map +1 -1
  87. package/dist/alphalib/types/robots/digitalocean-store.js +0 -1
  88. package/dist/alphalib/types/robots/digitalocean-store.js.map +1 -1
  89. package/dist/alphalib/types/robots/document-autorotate.d.ts.map +1 -1
  90. package/dist/alphalib/types/robots/document-autorotate.js +8 -1
  91. package/dist/alphalib/types/robots/document-autorotate.js.map +1 -1
  92. package/dist/alphalib/types/robots/document-convert.d.ts +8 -8
  93. package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
  94. package/dist/alphalib/types/robots/document-convert.js +9 -3
  95. package/dist/alphalib/types/robots/document-convert.js.map +1 -1
  96. package/dist/alphalib/types/robots/document-merge.d.ts.map +1 -1
  97. package/dist/alphalib/types/robots/document-merge.js +0 -1
  98. package/dist/alphalib/types/robots/document-merge.js.map +1 -1
  99. package/dist/alphalib/types/robots/document-ocr.d.ts.map +1 -1
  100. package/dist/alphalib/types/robots/document-ocr.js +0 -1
  101. package/dist/alphalib/types/robots/document-ocr.js.map +1 -1
  102. package/dist/alphalib/types/robots/document-optimize.d.ts.map +1 -1
  103. package/dist/alphalib/types/robots/document-optimize.js +0 -1
  104. package/dist/alphalib/types/robots/document-optimize.js.map +1 -1
  105. package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
  106. package/dist/alphalib/types/robots/document-split.js +9 -1
  107. package/dist/alphalib/types/robots/document-split.js.map +1 -1
  108. package/dist/alphalib/types/robots/document-thumbs.d.ts +12 -0
  109. package/dist/alphalib/types/robots/document-thumbs.d.ts.map +1 -1
  110. package/dist/alphalib/types/robots/document-thumbs.js +23 -4
  111. package/dist/alphalib/types/robots/document-thumbs.js.map +1 -1
  112. package/dist/alphalib/types/robots/dropbox-import.d.ts.map +1 -1
  113. package/dist/alphalib/types/robots/dropbox-import.js +0 -1
  114. package/dist/alphalib/types/robots/dropbox-import.js.map +1 -1
  115. package/dist/alphalib/types/robots/dropbox-store.d.ts.map +1 -1
  116. package/dist/alphalib/types/robots/dropbox-store.js +0 -1
  117. package/dist/alphalib/types/robots/dropbox-store.js.map +1 -1
  118. package/dist/alphalib/types/robots/edgly-deliver.d.ts.map +1 -1
  119. package/dist/alphalib/types/robots/edgly-deliver.js +8 -1
  120. package/dist/alphalib/types/robots/edgly-deliver.js.map +1 -1
  121. package/dist/alphalib/types/robots/file-compress.d.ts +12 -0
  122. package/dist/alphalib/types/robots/file-compress.d.ts.map +1 -1
  123. package/dist/alphalib/types/robots/file-compress.js +8 -1
  124. package/dist/alphalib/types/robots/file-compress.js.map +1 -1
  125. package/dist/alphalib/types/robots/file-decompress.d.ts +24 -0
  126. package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
  127. package/dist/alphalib/types/robots/file-decompress.js +30 -5
  128. package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
  129. package/dist/alphalib/types/robots/file-filter.d.ts.map +1 -1
  130. package/dist/alphalib/types/robots/file-filter.js +23 -6
  131. package/dist/alphalib/types/robots/file-filter.js.map +1 -1
  132. package/dist/alphalib/types/robots/file-hash.d.ts +24 -0
  133. package/dist/alphalib/types/robots/file-hash.d.ts.map +1 -1
  134. package/dist/alphalib/types/robots/file-hash.js +23 -1
  135. package/dist/alphalib/types/robots/file-hash.js.map +1 -1
  136. package/dist/alphalib/types/robots/file-preview.d.ts +12 -0
  137. package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
  138. package/dist/alphalib/types/robots/file-preview.js +8 -1
  139. package/dist/alphalib/types/robots/file-preview.js.map +1 -1
  140. package/dist/alphalib/types/robots/file-read.d.ts.map +1 -1
  141. package/dist/alphalib/types/robots/file-read.js +9 -1
  142. package/dist/alphalib/types/robots/file-read.js.map +1 -1
  143. package/dist/alphalib/types/robots/file-serve.d.ts +12 -0
  144. package/dist/alphalib/types/robots/file-serve.d.ts.map +1 -1
  145. package/dist/alphalib/types/robots/file-serve.js +38 -7
  146. package/dist/alphalib/types/robots/file-serve.js.map +1 -1
  147. package/dist/alphalib/types/robots/file-verify.d.ts.map +1 -1
  148. package/dist/alphalib/types/robots/file-verify.js +0 -1
  149. package/dist/alphalib/types/robots/file-verify.js.map +1 -1
  150. package/dist/alphalib/types/robots/file-virusscan.d.ts.map +1 -1
  151. package/dist/alphalib/types/robots/file-virusscan.js +5 -4
  152. package/dist/alphalib/types/robots/file-virusscan.js.map +1 -1
  153. package/dist/alphalib/types/robots/file-watermark.d.ts.map +1 -1
  154. package/dist/alphalib/types/robots/file-watermark.js +10 -0
  155. package/dist/alphalib/types/robots/file-watermark.js.map +1 -1
  156. package/dist/alphalib/types/robots/ftp-import.d.ts.map +1 -1
  157. package/dist/alphalib/types/robots/ftp-import.js +0 -1
  158. package/dist/alphalib/types/robots/ftp-import.js.map +1 -1
  159. package/dist/alphalib/types/robots/ftp-store.d.ts.map +1 -1
  160. package/dist/alphalib/types/robots/ftp-store.js +0 -1
  161. package/dist/alphalib/types/robots/ftp-store.js.map +1 -1
  162. package/dist/alphalib/types/robots/google-import.d.ts.map +1 -1
  163. package/dist/alphalib/types/robots/google-import.js +0 -1
  164. package/dist/alphalib/types/robots/google-import.js.map +1 -1
  165. package/dist/alphalib/types/robots/google-store.d.ts.map +1 -1
  166. package/dist/alphalib/types/robots/google-store.js +0 -1
  167. package/dist/alphalib/types/robots/google-store.js.map +1 -1
  168. package/dist/alphalib/types/robots/html-convert.d.ts.map +1 -1
  169. package/dist/alphalib/types/robots/html-convert.js +0 -1
  170. package/dist/alphalib/types/robots/html-convert.js.map +1 -1
  171. package/dist/alphalib/types/robots/http-import.d.ts.map +1 -1
  172. package/dist/alphalib/types/robots/http-import.js +0 -1
  173. package/dist/alphalib/types/robots/http-import.js.map +1 -1
  174. package/dist/alphalib/types/robots/image-bgremove.d.ts +8 -8
  175. package/dist/alphalib/types/robots/image-bgremove.d.ts.map +1 -1
  176. package/dist/alphalib/types/robots/image-bgremove.js +4 -2
  177. package/dist/alphalib/types/robots/image-bgremove.js.map +1 -1
  178. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts +465 -0
  179. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts.map +1 -0
  180. package/dist/alphalib/types/robots/image-copyrightdetect.js +136 -0
  181. package/dist/alphalib/types/robots/image-copyrightdetect.js.map +1 -0
  182. package/dist/alphalib/types/robots/image-describe.d.ts.map +1 -1
  183. package/dist/alphalib/types/robots/image-describe.js +0 -1
  184. package/dist/alphalib/types/robots/image-describe.js.map +1 -1
  185. package/dist/alphalib/types/robots/image-enhance.d.ts +502 -0
  186. package/dist/alphalib/types/robots/image-enhance.d.ts.map +1 -0
  187. package/dist/alphalib/types/robots/image-enhance.js +146 -0
  188. package/dist/alphalib/types/robots/image-enhance.js.map +1 -0
  189. package/dist/alphalib/types/robots/image-facedetect.d.ts.map +1 -1
  190. package/dist/alphalib/types/robots/image-facedetect.js +0 -1
  191. package/dist/alphalib/types/robots/image-facedetect.js.map +1 -1
  192. package/dist/alphalib/types/robots/image-generate.d.ts +4 -5
  193. package/dist/alphalib/types/robots/image-generate.d.ts.map +1 -1
  194. package/dist/alphalib/types/robots/image-generate.js +62 -8
  195. package/dist/alphalib/types/robots/image-generate.js.map +1 -1
  196. package/dist/alphalib/types/robots/image-merge.d.ts +12 -12
  197. package/dist/alphalib/types/robots/image-merge.d.ts.map +1 -1
  198. package/dist/alphalib/types/robots/image-merge.js +0 -1
  199. package/dist/alphalib/types/robots/image-merge.js.map +1 -1
  200. package/dist/alphalib/types/robots/image-ocr.d.ts.map +1 -1
  201. package/dist/alphalib/types/robots/image-ocr.js +0 -1
  202. package/dist/alphalib/types/robots/image-ocr.js.map +1 -1
  203. package/dist/alphalib/types/robots/image-optimize.d.ts +12 -0
  204. package/dist/alphalib/types/robots/image-optimize.d.ts.map +1 -1
  205. package/dist/alphalib/types/robots/image-optimize.js +16 -3
  206. package/dist/alphalib/types/robots/image-optimize.js.map +1 -1
  207. package/dist/alphalib/types/robots/image-resize.d.ts +20 -8
  208. package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
  209. package/dist/alphalib/types/robots/image-resize.js +37 -1
  210. package/dist/alphalib/types/robots/image-resize.js.map +1 -1
  211. package/dist/alphalib/types/robots/image-upscale.d.ts +447 -0
  212. package/dist/alphalib/types/robots/image-upscale.d.ts.map +1 -0
  213. package/dist/alphalib/types/robots/image-upscale.js +65 -0
  214. package/dist/alphalib/types/robots/image-upscale.js.map +1 -0
  215. package/dist/alphalib/types/robots/mega-import.d.ts +244 -0
  216. package/dist/alphalib/types/robots/mega-import.d.ts.map +1 -0
  217. package/dist/alphalib/types/robots/mega-import.js +84 -0
  218. package/dist/alphalib/types/robots/mega-import.js.map +1 -0
  219. package/dist/alphalib/types/robots/mega-store.d.ts +526 -0
  220. package/dist/alphalib/types/robots/mega-store.d.ts.map +1 -0
  221. package/dist/alphalib/types/robots/mega-store.js +82 -0
  222. package/dist/alphalib/types/robots/mega-store.js.map +1 -0
  223. package/dist/alphalib/types/robots/meta-read.d.ts.map +1 -1
  224. package/dist/alphalib/types/robots/meta-read.js +8 -0
  225. package/dist/alphalib/types/robots/meta-read.js.map +1 -1
  226. package/dist/alphalib/types/robots/meta-write.d.ts.map +1 -1
  227. package/dist/alphalib/types/robots/meta-write.js +0 -1
  228. package/dist/alphalib/types/robots/meta-write.js.map +1 -1
  229. package/dist/alphalib/types/robots/minio-import.d.ts.map +1 -1
  230. package/dist/alphalib/types/robots/minio-import.js +0 -1
  231. package/dist/alphalib/types/robots/minio-import.js.map +1 -1
  232. package/dist/alphalib/types/robots/minio-store.d.ts.map +1 -1
  233. package/dist/alphalib/types/robots/minio-store.js +0 -1
  234. package/dist/alphalib/types/robots/minio-store.js.map +1 -1
  235. package/dist/alphalib/types/robots/progress-simulate.d.ts.map +1 -1
  236. package/dist/alphalib/types/robots/progress-simulate.js +13 -0
  237. package/dist/alphalib/types/robots/progress-simulate.js.map +1 -1
  238. package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
  239. package/dist/alphalib/types/robots/s3-import.js +0 -1
  240. package/dist/alphalib/types/robots/s3-import.js.map +1 -1
  241. package/dist/alphalib/types/robots/s3-store.d.ts.map +1 -1
  242. package/dist/alphalib/types/robots/s3-store.js +0 -1
  243. package/dist/alphalib/types/robots/s3-store.js.map +1 -1
  244. package/dist/alphalib/types/robots/script-run.d.ts.map +1 -1
  245. package/dist/alphalib/types/robots/script-run.js +10 -1
  246. package/dist/alphalib/types/robots/script-run.js.map +1 -1
  247. package/dist/alphalib/types/robots/sftp-import.d.ts.map +1 -1
  248. package/dist/alphalib/types/robots/sftp-import.js +0 -1
  249. package/dist/alphalib/types/robots/sftp-import.js.map +1 -1
  250. package/dist/alphalib/types/robots/sftp-store.d.ts.map +1 -1
  251. package/dist/alphalib/types/robots/sftp-store.js +0 -1
  252. package/dist/alphalib/types/robots/sftp-store.js.map +1 -1
  253. package/dist/alphalib/types/robots/speech-transcribe.d.ts.map +1 -1
  254. package/dist/alphalib/types/robots/speech-transcribe.js +0 -1
  255. package/dist/alphalib/types/robots/speech-transcribe.js.map +1 -1
  256. package/dist/alphalib/types/robots/supabase-import.d.ts.map +1 -1
  257. package/dist/alphalib/types/robots/supabase-import.js +0 -1
  258. package/dist/alphalib/types/robots/supabase-import.js.map +1 -1
  259. package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
  260. package/dist/alphalib/types/robots/supabase-store.js +0 -1
  261. package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
  262. package/dist/alphalib/types/robots/swift-import.d.ts.map +1 -1
  263. package/dist/alphalib/types/robots/swift-import.js +0 -1
  264. package/dist/alphalib/types/robots/swift-import.js.map +1 -1
  265. package/dist/alphalib/types/robots/swift-store.d.ts.map +1 -1
  266. package/dist/alphalib/types/robots/swift-store.js +0 -1
  267. package/dist/alphalib/types/robots/swift-store.js.map +1 -1
  268. package/dist/alphalib/types/robots/text-speak.d.ts.map +1 -1
  269. package/dist/alphalib/types/robots/text-speak.js +0 -1
  270. package/dist/alphalib/types/robots/text-speak.js.map +1 -1
  271. package/dist/alphalib/types/robots/text-translate.d.ts.map +1 -1
  272. package/dist/alphalib/types/robots/text-translate.js +0 -1
  273. package/dist/alphalib/types/robots/text-translate.js.map +1 -1
  274. package/dist/alphalib/types/robots/tigris-import.d.ts.map +1 -1
  275. package/dist/alphalib/types/robots/tigris-import.js +0 -1
  276. package/dist/alphalib/types/robots/tigris-import.js.map +1 -1
  277. package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
  278. package/dist/alphalib/types/robots/tigris-store.js +0 -1
  279. package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
  280. package/dist/alphalib/types/robots/tlcdn-deliver.d.ts.map +1 -1
  281. package/dist/alphalib/types/robots/tlcdn-deliver.js +8 -1
  282. package/dist/alphalib/types/robots/tlcdn-deliver.js.map +1 -1
  283. package/dist/alphalib/types/robots/tus-store.d.ts.map +1 -1
  284. package/dist/alphalib/types/robots/tus-store.js +1 -14
  285. package/dist/alphalib/types/robots/tus-store.js.map +1 -1
  286. package/dist/alphalib/types/robots/upload-handle.d.ts.map +1 -1
  287. package/dist/alphalib/types/robots/upload-handle.js +0 -1
  288. package/dist/alphalib/types/robots/upload-handle.js.map +1 -1
  289. package/dist/alphalib/types/robots/video-adaptive.d.ts +32 -8
  290. package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
  291. package/dist/alphalib/types/robots/video-adaptive.js +22 -6
  292. package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
  293. package/dist/alphalib/types/robots/video-artwork.d.ts +2855 -0
  294. package/dist/alphalib/types/robots/video-artwork.d.ts.map +1 -0
  295. package/dist/alphalib/types/robots/video-artwork.js +66 -0
  296. package/dist/alphalib/types/robots/video-artwork.js.map +1 -0
  297. package/dist/alphalib/types/robots/video-concat.d.ts +36 -0
  298. package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
  299. package/dist/alphalib/types/robots/video-concat.js +30 -1
  300. package/dist/alphalib/types/robots/video-concat.js.map +1 -1
  301. package/dist/alphalib/types/robots/video-encode.d.ts.map +1 -1
  302. package/dist/alphalib/types/robots/video-encode.js +0 -1
  303. package/dist/alphalib/types/robots/video-encode.js.map +1 -1
  304. package/dist/alphalib/types/robots/video-generate.d.ts +594 -0
  305. package/dist/alphalib/types/robots/video-generate.d.ts.map +1 -0
  306. package/dist/alphalib/types/robots/video-generate.js +90 -0
  307. package/dist/alphalib/types/robots/video-generate.js.map +1 -0
  308. package/dist/alphalib/types/robots/video-merge.d.ts +24 -0
  309. package/dist/alphalib/types/robots/video-merge.d.ts.map +1 -1
  310. package/dist/alphalib/types/robots/video-merge.js +33 -1
  311. package/dist/alphalib/types/robots/video-merge.js.map +1 -1
  312. package/dist/alphalib/types/robots/video-ondemand.d.ts.map +1 -1
  313. package/dist/alphalib/types/robots/video-ondemand.js +3 -4
  314. package/dist/alphalib/types/robots/video-ondemand.js.map +1 -1
  315. package/dist/alphalib/types/robots/video-split.d.ts +2939 -0
  316. package/dist/alphalib/types/robots/video-split.d.ts.map +1 -0
  317. package/dist/alphalib/types/robots/video-split.js +78 -0
  318. package/dist/alphalib/types/robots/video-split.js.map +1 -0
  319. package/dist/alphalib/types/robots/video-subtitle.d.ts +52 -4
  320. package/dist/alphalib/types/robots/video-subtitle.d.ts.map +1 -1
  321. package/dist/alphalib/types/robots/video-subtitle.js +61 -8
  322. package/dist/alphalib/types/robots/video-subtitle.js.map +1 -1
  323. package/dist/alphalib/types/robots/video-thumbs.d.ts.map +1 -1
  324. package/dist/alphalib/types/robots/video-thumbs.js +0 -1
  325. package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
  326. package/dist/alphalib/types/robots/vimeo-import.d.ts +4 -4
  327. package/dist/alphalib/types/robots/vimeo-import.d.ts.map +1 -1
  328. package/dist/alphalib/types/robots/vimeo-import.js +0 -1
  329. package/dist/alphalib/types/robots/vimeo-import.js.map +1 -1
  330. package/dist/alphalib/types/robots/vimeo-store.d.ts +2 -2
  331. package/dist/alphalib/types/robots/vimeo-store.d.ts.map +1 -1
  332. package/dist/alphalib/types/robots/vimeo-store.js +14 -3
  333. package/dist/alphalib/types/robots/vimeo-store.js.map +1 -1
  334. package/dist/alphalib/types/robots/wasabi-import.d.ts.map +1 -1
  335. package/dist/alphalib/types/robots/wasabi-import.js +0 -1
  336. package/dist/alphalib/types/robots/wasabi-import.js.map +1 -1
  337. package/dist/alphalib/types/robots/wasabi-store.d.ts.map +1 -1
  338. package/dist/alphalib/types/robots/wasabi-store.js +0 -1
  339. package/dist/alphalib/types/robots/wasabi-store.js.map +1 -1
  340. package/dist/alphalib/types/robots/youtube-store.d.ts.map +1 -1
  341. package/dist/alphalib/types/robots/youtube-store.js +4 -5
  342. package/dist/alphalib/types/robots/youtube-store.js.map +1 -1
  343. package/dist/alphalib/types/template.d.ts +41 -132175
  344. package/dist/alphalib/types/template.d.ts.map +1 -1
  345. package/dist/alphalib/types/template.js +16 -3
  346. package/dist/alphalib/types/template.js.map +1 -1
  347. package/dist/alphalib/types/templateCredential.d.ts +3 -3
  348. package/dist/alphalib/types/templateCredential.d.ts.map +1 -1
  349. package/dist/alphalib/types/templateCredential.js +1 -0
  350. package/dist/alphalib/types/templateCredential.js.map +1 -1
  351. package/dist/alphalib/zodParseWithContext.d.ts.map +1 -1
  352. package/dist/alphalib/zodParseWithContext.js +15 -11
  353. package/dist/alphalib/zodParseWithContext.js.map +1 -1
  354. package/dist/cli.js +0 -0
  355. package/dist/robots.js +2 -2
  356. package/dist/robots.js.map +1 -1
  357. package/package.json +2 -2
  358. package/src/alphalib/assembly-linter.ts +1 -1
  359. package/src/alphalib/stepParsing.ts +2 -2
  360. package/src/alphalib/types/assemblyStatus.ts +41 -2
  361. package/src/alphalib/types/robots/_index.ts +211 -20
  362. package/src/alphalib/types/robots/_instructions-primitives.ts +93 -3
  363. package/src/alphalib/types/robots/ai-chat.ts +35 -5
  364. package/src/alphalib/types/robots/assembly-savejson.ts +8 -0
  365. package/src/alphalib/types/robots/audio-artwork.ts +4 -5
  366. package/src/alphalib/types/robots/audio-concat.ts +1 -2
  367. package/src/alphalib/types/robots/audio-encode.ts +1 -2
  368. package/src/alphalib/types/robots/audio-loop.ts +1 -2
  369. package/src/alphalib/types/robots/audio-merge.ts +1 -2
  370. package/src/alphalib/types/robots/audio-split.ts +130 -0
  371. package/src/alphalib/types/robots/audio-waveform.ts +90 -6
  372. package/src/alphalib/types/robots/azure-import.ts +0 -1
  373. package/src/alphalib/types/robots/azure-store.ts +0 -1
  374. package/src/alphalib/types/robots/backblaze-import.ts +0 -1
  375. package/src/alphalib/types/robots/backblaze-store.ts +0 -1
  376. package/src/alphalib/types/robots/box-import.ts +97 -0
  377. package/src/alphalib/types/robots/box-store.ts +94 -0
  378. package/src/alphalib/types/robots/cloudfiles-import.ts +0 -1
  379. package/src/alphalib/types/robots/cloudfiles-store.ts +0 -1
  380. package/src/alphalib/types/robots/cloudflare-import.ts +0 -1
  381. package/src/alphalib/types/robots/cloudflare-store.ts +0 -1
  382. package/src/alphalib/types/robots/digitalocean-import.ts +0 -1
  383. package/src/alphalib/types/robots/digitalocean-store.ts +0 -1
  384. package/src/alphalib/types/robots/document-autorotate.ts +8 -1
  385. package/src/alphalib/types/robots/document-convert.ts +10 -3
  386. package/src/alphalib/types/robots/document-merge.ts +0 -1
  387. package/src/alphalib/types/robots/document-ocr.ts +0 -1
  388. package/src/alphalib/types/robots/document-optimize.ts +0 -1
  389. package/src/alphalib/types/robots/document-split.ts +9 -1
  390. package/src/alphalib/types/robots/document-thumbs.ts +26 -4
  391. package/src/alphalib/types/robots/dropbox-import.ts +0 -1
  392. package/src/alphalib/types/robots/dropbox-store.ts +0 -1
  393. package/src/alphalib/types/robots/edgly-deliver.ts +8 -1
  394. package/src/alphalib/types/robots/file-compress.ts +8 -1
  395. package/src/alphalib/types/robots/file-decompress.ts +30 -5
  396. package/src/alphalib/types/robots/file-filter.ts +23 -6
  397. package/src/alphalib/types/robots/file-hash.ts +23 -1
  398. package/src/alphalib/types/robots/file-preview.ts +8 -1
  399. package/src/alphalib/types/robots/file-read.ts +9 -1
  400. package/src/alphalib/types/robots/file-serve.ts +39 -7
  401. package/src/alphalib/types/robots/file-verify.ts +0 -1
  402. package/src/alphalib/types/robots/file-virusscan.ts +6 -4
  403. package/src/alphalib/types/robots/file-watermark.ts +10 -0
  404. package/src/alphalib/types/robots/ftp-import.ts +0 -1
  405. package/src/alphalib/types/robots/ftp-store.ts +0 -1
  406. package/src/alphalib/types/robots/google-import.ts +0 -1
  407. package/src/alphalib/types/robots/google-store.ts +0 -1
  408. package/src/alphalib/types/robots/html-convert.ts +0 -1
  409. package/src/alphalib/types/robots/http-import.ts +0 -1
  410. package/src/alphalib/types/robots/image-bgremove.ts +4 -2
  411. package/src/alphalib/types/robots/image-copyrightdetect.ts +167 -0
  412. package/src/alphalib/types/robots/image-describe.ts +0 -1
  413. package/src/alphalib/types/robots/image-enhance.ts +185 -0
  414. package/src/alphalib/types/robots/image-facedetect.ts +0 -1
  415. package/src/alphalib/types/robots/image-generate.ts +74 -8
  416. package/src/alphalib/types/robots/image-merge.ts +0 -1
  417. package/src/alphalib/types/robots/image-ocr.ts +0 -1
  418. package/src/alphalib/types/robots/image-optimize.ts +16 -3
  419. package/src/alphalib/types/robots/image-resize.ts +37 -1
  420. package/src/alphalib/types/robots/image-upscale.ts +93 -0
  421. package/src/alphalib/types/robots/mega-import.ts +123 -0
  422. package/src/alphalib/types/robots/mega-store.ts +109 -0
  423. package/src/alphalib/types/robots/meta-read.ts +8 -0
  424. package/src/alphalib/types/robots/meta-write.ts +0 -1
  425. package/src/alphalib/types/robots/minio-import.ts +0 -1
  426. package/src/alphalib/types/robots/minio-store.ts +0 -1
  427. package/src/alphalib/types/robots/progress-simulate.ts +13 -0
  428. package/src/alphalib/types/robots/s3-import.ts +0 -1
  429. package/src/alphalib/types/robots/s3-store.ts +0 -1
  430. package/src/alphalib/types/robots/script-run.ts +11 -1
  431. package/src/alphalib/types/robots/sftp-import.ts +0 -1
  432. package/src/alphalib/types/robots/sftp-store.ts +0 -1
  433. package/src/alphalib/types/robots/speech-transcribe.ts +0 -1
  434. package/src/alphalib/types/robots/supabase-import.ts +0 -1
  435. package/src/alphalib/types/robots/supabase-store.ts +0 -1
  436. package/src/alphalib/types/robots/swift-import.ts +0 -1
  437. package/src/alphalib/types/robots/swift-store.ts +0 -1
  438. package/src/alphalib/types/robots/text-speak.ts +0 -1
  439. package/src/alphalib/types/robots/text-translate.ts +0 -1
  440. package/src/alphalib/types/robots/tigris-import.ts +0 -1
  441. package/src/alphalib/types/robots/tigris-store.ts +0 -1
  442. package/src/alphalib/types/robots/tlcdn-deliver.ts +8 -1
  443. package/src/alphalib/types/robots/tus-store.ts +1 -14
  444. package/src/alphalib/types/robots/upload-handle.ts +0 -1
  445. package/src/alphalib/types/robots/video-adaptive.ts +22 -6
  446. package/src/alphalib/types/robots/video-artwork.ts +100 -0
  447. package/src/alphalib/types/robots/video-concat.ts +30 -1
  448. package/src/alphalib/types/robots/video-encode.ts +0 -1
  449. package/src/alphalib/types/robots/video-generate.ts +120 -0
  450. package/src/alphalib/types/robots/video-merge.ts +33 -1
  451. package/src/alphalib/types/robots/video-ondemand.ts +3 -4
  452. package/src/alphalib/types/robots/video-split.ts +117 -0
  453. package/src/alphalib/types/robots/video-subtitle.ts +61 -8
  454. package/src/alphalib/types/robots/video-thumbs.ts +0 -1
  455. package/src/alphalib/types/robots/vimeo-import.ts +0 -1
  456. package/src/alphalib/types/robots/vimeo-store.ts +14 -3
  457. package/src/alphalib/types/robots/wasabi-import.ts +0 -1
  458. package/src/alphalib/types/robots/wasabi-store.ts +0 -1
  459. package/src/alphalib/types/robots/youtube-store.ts +4 -5
  460. package/src/alphalib/types/template.ts +47 -15
  461. package/src/alphalib/types/templateCredential.ts +1 -0
  462. package/src/alphalib/zodParseWithContext.ts +19 -12
  463. package/src/robots.ts +2 -2
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  bytescount: 1,
9
8
  discount_factor: 0.8,
10
9
  discount_pct: 20,
@@ -46,9 +45,9 @@ export const robotFileDecompressInstructionsSchema = robotBase
46
45
  robot: z.literal('/file/decompress').describe(`
47
46
  This Robot supports the following archive formats:
48
47
 
49
- - ZIP archives (with uncompressed or "deflate"-compressed entries)
50
- - 7-Zip archives
51
- - RAR archives
48
+ - ZIP archives (with uncompressed or "deflate"-compressed entries, including password-protected)
49
+ - 7-Zip archives (including AES-256 encrypted)
50
+ - RAR archives (including encrypted)
52
51
  - GNU tar format (including GNU long filenames, long link names, and sparse files)
53
52
  - Solaris 9 extended tar format (including ACLs)
54
53
  - Old V7 tar archives
@@ -74,7 +73,21 @@ This <dfn>Robot</dfn> also detects and handles any of the following before evalu
74
73
  - compress/LZW compression
75
74
  - lzma, lzip, and xz compression
76
75
 
77
- For security reasons, archives that contain symlinks to outside the archived dir, will error out the <dfn>Assembly</dfn>. Decompressing password-protected archives (encrypted archives) is currently not fully supported but will not cause an <dfn>Assembly</dfn> to fail.
76
+ For security reasons, archives that contain symlinks to outside the archived dir, will error out the <dfn>Assembly</dfn>.
77
+
78
+ Password-protected archives (ZIP with ZipCrypto or AES encryption, RAR encrypted, 7z with AES-256) are supported via the \`password\` parameter.
79
+ `),
80
+ password: z
81
+ .string()
82
+ .optional()
83
+ .describe(`
84
+ The password to use for decrypting password-protected archives.
85
+
86
+ Supports encrypted ZIP (ZipCrypto and AES), RAR (encrypted), and 7z (AES-256 encrypted) archives.
87
+
88
+ For security, this value should be passed via Template Variables (\`\${fields.archive_password}\`) or Template Credentials rather than hardcoded in your Assembly Instructions. The password is never logged or included in Assembly status responses.
89
+
90
+ If the archive is encrypted and no password is provided, or if the password is incorrect, the <dfn>Assembly</dfn> will fail with a \`FILE_DECOMPRESS_PASSWORD_REQUIRED\` or \`FILE_DECOMPRESS_PASSWORD_INCORRECT\` error.
78
91
  `),
79
92
  ignore_errors: z
80
93
  .union([z.boolean(), z.array(z.enum(['meta', 'execute']))])
@@ -88,6 +101,18 @@ A possible array member is only \`"meta"\`.
88
101
  You might see an error when trying to extract metadata from the files inside your archive. This happens, for example, for files with a size of zero bytes. Setting this to \`true\` will cause the <dfn>Robot</dfn> to not stop the file decompression (and the entire <dfn>Assembly</dfn>) when that happens.
89
102
 
90
103
  To keep backwards compatibility, setting this parameter to \`true\` will set it to \`["meta"]\` internally.
104
+ `),
105
+ turbo: z
106
+ .boolean()
107
+ .default(true)
108
+ .describe(`
109
+ Enables Turbo Mode for \`/file/decompress\`.
110
+
111
+ This setting defaults to \`true\`. Set it to \`false\` to disable Turbo Mode.
112
+
113
+ When enabled, extracted files are emitted as soon as they are available, which can speed up downstream processing for large archives.
114
+
115
+ Turbo Mode also changes usage accounting: emitted extracted-file bytes and original input-archive bytes are billed with a surcharge (25% by default).
91
116
  `),
92
117
  })
93
118
  .strict()
@@ -9,7 +9,6 @@ import {
9
9
  } from './_instructions-primitives.ts'
10
10
 
11
11
  export const meta: RobotMetaInput = {
12
- allowed_for_url_transform: true,
13
12
  bytescount: 0,
14
13
  discount_factor: 0,
15
14
  discount_pct: 100,
@@ -18,7 +17,7 @@ export const meta: RobotMetaInput = {
18
17
  filtered: {
19
18
  robot: '/file/filter',
20
19
  use: ':original',
21
- declines: [['${file.size}', '>', '20971520']],
20
+ declines: [['${file.size}', '>', '20mb']],
22
21
  error_on_decline: true,
23
22
  error_msg: 'File size must not exceed 20 MB',
24
23
  },
@@ -74,9 +73,21 @@ Examples:
74
73
 
75
74
  - \`[["\${file.meta.width}", ">", "\${file.meta.height}"]]\`
76
75
  - \`[["\${file.size}", "<=", "720"]]\`
76
+ - \`[["\${file.size}", ">", "20mb"]]\`
77
77
  - \`[["720", ">=", "\${file.size}"]]\`
78
78
  - \`[["\${file.mime}", "regex", "image"]]\`
79
79
 
80
+ When you match against \`\${file.mime}\`, the value is typically based on Transloadit’s
81
+ server-side metadata extraction in the normal upload flow, rather than only the MIME type reported
82
+ by the client or browser. This makes \`/file/filter\` suitable for rejecting mislabeled files.
83
+ Depending on the file container and the detection tools involved, some formats may be reported under
84
+ closely related MIME types such as \`image/heic\` or \`image/heif\`.
85
+
86
+ If you only want formats that browsers consistently render, prefer an explicit allowlist such as
87
+ \`^(image/jpeg|image/png|image/gif|image/webp|image/avif)$\` over a broad \`^image/\` rule.
88
+
89
+ For numeric comparisons (\`<\`, \`>\`, \`<=\`, \`>=\`), you can use human-readable byte values such as \`"20mb"\`, \`"1gb"\`, or \`"512kb"\`. These use binary (1024-based) multipliers. Supported units: \`b\`, \`kb\`, \`mb\`, \`gb\`, \`tb\`, \`pb\` (and their IEC equivalents \`kib\`, \`mib\`, \`gib\`, \`tib\`, \`pib\`).
90
+
80
91
  The \`includes\` and \`!includes\` operators work with arrays or strings (strings use substring checks).
81
92
 
82
93
  > [!Warning]
@@ -98,9 +109,12 @@ As indicated, we charge for this via [🤖/script/run](/docs/robots/script-run/)
98
109
  accepts: filterCondition
99
110
  .describe(
100
111
  `
101
- Files that match at least one requirement will be accepted, or declined otherwise. If the value is \`null\`, all files will be accepted. If the array is empty, no files will be accepted. Example:
112
+ Files that match at least one requirement will be accepted, or declined otherwise. If the value is \`null\`, all files will be accepted. If the array is empty, no files will be accepted. Examples:
102
113
 
103
- \`[["\${file.mime}", "==", "image/gif"]]\`.
114
+ \`[["\${file.mime}", "==", "image/gif"]]\`
115
+ \`[["\${file.size}", "<", "5kb"]]\`
116
+
117
+ For numeric comparisons (\`<\`, \`>\`, \`<=\`, \`>=\`), human-readable byte values such as \`"20mb"\`, \`"1gb"\`, or \`"512kb"\` are supported.
104
118
 
105
119
  If the \`condition_type\` parameter is set to \`"and"\`, then all requirements must match for the file to be accepted.
106
120
 
@@ -111,9 +125,12 @@ If \`accepts\` and \`declines\` are both provided, the requirements in \`accepts
111
125
  declines: filterCondition
112
126
  .describe(
113
127
  `
114
- Files that match at least one requirement will be declined, or accepted otherwise. If the value is \`null\` or an empty array, no files will be declined. Example:
128
+ Files that match at least one requirement will be declined, or accepted otherwise. If the value is \`null\` or an empty array, no files will be declined. Examples:
129
+
130
+ \`[["\${file.size}", ">", "1024"]]\`
131
+ \`[["\${file.size}", ">", "20mb"]]\`
115
132
 
116
- \`[["\${file.size}",">","1024"]]\`.
133
+ For numeric comparisons (\`<\`, \`>\`, \`<=\`, \`>=\`), human-readable byte values such as \`"20mb"\`, \`"1gb"\`, or \`"512kb"\` are supported.
117
134
 
118
135
  If the \`condition_type\` parameter is set to \`"and"\`, then all requirements must match for the file to be declined.
119
136
 
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: false,
8
7
  bytescount: 5,
9
8
  discount_factor: 0.2,
10
9
  discount_pct: 80,
@@ -52,6 +51,29 @@ This <dfn>Robot</dfn> allows you to hash any file as part of the <dfn>Assembly</
52
51
  The hashing algorithm to use.
53
52
 
54
53
  The file hash is exported as \`file.meta.hash\`.
54
+ `),
55
+ partial: z
56
+ .enum(['full', 'first', 'last', 'both'])
57
+ .default('full')
58
+ .describe(`
59
+ Specifies which portion of the file to hash. This is useful for fast fingerprinting of large files.
60
+
61
+ - \`"full"\` (default): Hash the entire file.
62
+ - \`"first"\`: Hash only the first N bytes (specified by \`partial_size\`).
63
+ - \`"last"\`: Hash only the last N bytes (specified by \`partial_size\`).
64
+ - \`"both"\`: Hash the first N bytes concatenated with the last N bytes.
65
+
66
+ When using partial hashing, \`file.meta.hash_partial\` indicates the mode used, and \`file.meta.hash_partial_size\` indicates the number of bytes hashed from each portion.
67
+ `),
68
+ partial_size: z
69
+ .number()
70
+ .int()
71
+ .positive()
72
+ .default(1048576)
73
+ .describe(`
74
+ The number of bytes to hash when using partial hashing. Defaults to \`1048576\` (1 MB).
75
+
76
+ This parameter is only used when \`partial\` is set to \`"first"\`, \`"last"\`, or \`"both"\`.
55
77
  `),
56
78
  })
57
79
  .strict()
@@ -13,7 +13,6 @@ import {
13
13
  } from './_instructions-primitives.ts'
14
14
 
15
15
  export const meta: RobotMetaInput = {
16
- allowed_for_url_transform: true,
17
16
  bytescount: 1,
18
17
  discount_factor: 1,
19
18
  discount_pct: 0,
@@ -83,6 +82,14 @@ See the list of available [resize strategies](/docs/topics/resize-strategies/) f
83
82
  `),
84
83
  background: color_with_alpha.default('#ffffffff').describe(`
85
84
  The hexadecimal code of the color used to fill the background (only used for the pad resize strategy). The format is \`#rrggbb[aa]\` (red, green, blue, alpha). Use \`#00000000\` for a transparent padding.
85
+ `),
86
+ zoom: z
87
+ .boolean()
88
+ .default(true)
89
+ .describe(`
90
+ If set to \`false\`, smaller images will not be stretched to the desired \`width\` and \`height\`. This is useful if you want to retain the original image dimensions and only limit the output to a maximum size. For details about the impact of zooming for your preferred resize strategy, see the list of available [resize strategies](/docs/topics/resize-strategies/).
91
+
92
+ Note that this parameter only affects strategies that produce a still image. Animated clips generated by the \`clip\` strategy are not affected.
86
93
  `),
87
94
  strategy: z
88
95
  .object({
@@ -4,10 +4,18 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  bytescount: 5,
9
8
  discount_factor: 0.2,
10
9
  discount_pct: 80,
10
+ example_code: {
11
+ steps: {
12
+ read: {
13
+ robot: '/file/read',
14
+ use: ':original',
15
+ },
16
+ },
17
+ },
18
+ example_code_description: 'Read UTF-8 text content from an uploaded file:',
11
19
  minimum_charge: 512000,
12
20
  output_factor: 1,
13
21
  override_lvl1: 'Document Processing',
@@ -4,10 +4,26 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  bytescount: 4,
9
8
  discount_factor: 0.25,
10
9
  discount_pct: 75,
10
+ example_code: {
11
+ steps: {
12
+ resized: {
13
+ robot: '/image/resize',
14
+ use: ':original',
15
+ width: 800,
16
+ height: 450,
17
+ resize_strategy: 'fit',
18
+ },
19
+ served: {
20
+ robot: '/file/serve',
21
+ use: 'resized',
22
+ cache_duration: 86400,
23
+ },
24
+ },
25
+ },
26
+ example_code_description: 'Serve transformed files with explicit browser and CDN cache duration:',
11
27
  minimum_charge: 0,
12
28
  output_factor: 1,
13
29
  purpose_sentence: 'serves files to web browsers',
@@ -35,7 +51,7 @@ export const robotFileServeInstructionsSchema = robotBase
35
51
  .merge(robotUse)
36
52
  .extend({
37
53
  robot: z.literal('/file/serve').describe(`
38
- When you want Transloadit to tranform files on the fly, you can use this <dfn>Robot</dfn> to determine which <dfn>Step</dfn> of a <dfn>Template</dfn> should be served to the end-user (via a CDN), as well as set extra information on the served files, such as headers. This way you can for instance suggest the CDN for how long to keep cached copies of the result around. By default, as you can see in the \`headers\` parameter, we instruct browsers to cache the result for 72h (\`259200\` seconds) and CDNs to cache the content for 24h (\`86400\` seconds). These values should be adjusted to suit your use case.
54
+ When you want Transloadit to tranform files on the fly, you can use this <dfn>Robot</dfn> to determine which <dfn>Step</dfn> of a <dfn>Template</dfn> should be served to the end-user (via a CDN), as well as set extra information on the served files, such as headers. This way you can for instance suggest the CDN for how long to keep cached copies of the result around. By default, we instruct browsers to cache the result for 72h (\`259200\` seconds) and CDNs to cache the content for 24h (\`86400\` seconds). Use the \`cache_duration\` parameter to customize both values at once.
39
55
 
40
56
  🤖/file/serve merely acts as the glue layer between our <dfn>Assembly</dfn> engine and serving files over HTTP. It let's you pick the proper result of a series of <dfn>Steps</dfn> via the \`use\` parameter and configure headers on the original content. That is where its responsibilies end, and 🤖/tlcdn/deliver, then takes over to globally distribute this original content across the globe, and make sure that is cached close to your end-users, when they make requests such as <https://my-app.tlcdn.com/resize-img/canoe.jpg?w=500>, another. 🤖/tlcdn/deliver is not a part of your <dfn>Assembly Instructions</dfn>, but it may appear on your invoices as bandwidth charges incur when distributing the cached copies. 🤖/file/serve only charges when the CDN does not have a cached copy and requests to regenerate the original content, which depending on your caching settings could be just once a month, or year, per file/transformation.
41
57
 
@@ -43,9 +59,9 @@ While theoretically possible, you could use [🤖/file/serve](/docs/robots/file-
43
59
 
44
60
  Also consider configuring caching headers and cache-control directives to control how content is cached and invalidated on the CDN edge servers, balancing between freshness and efficiency.
45
61
 
46
- ## Smart CDN Security with Signature Authentication
62
+ ## Smart CDN security with signed URLs
47
63
 
48
- You can leverage [Signature Authentication](/docs/api/authentication/#smart-cdn) to avoid abuse of our encoding platform. Below is a quick Node.js example using our Node SDK, but there are [examples for other languages and SDKs](/docs/api/authentication/#example-code) as well.
64
+ You can leverage [signed Smart CDN URLs](/docs/api/authentication/#smart-cdn) to avoid abuse of our encoding platform. Below is a quick Node.js example using our Node SDK, but there are [examples for other languages and SDKs](/docs/api/authentication/#example-code) as well.
49
65
 
50
66
  \`\`\`javascript
51
67
  // yarn add transloadit
@@ -71,28 +87,44 @@ console.log(url)
71
87
 
72
88
  This will generate a signed Smart CDN URL that includes authentication parameters, preventing unauthorized access to your transformation endpoints.
73
89
 
90
+ For new integrations, use the modern \`sig\` + \`exp\` format. Legacy \`s\` signatures are deprecated. Also note that the expiration window is the practical cache window for signed results: shorter expirations tighten access control, while longer expirations improve cache reuse and lower encoding volume.
91
+
74
92
  ## More information
75
93
 
76
94
  - [Content Delivery](/services/content-delivery/)
77
95
  - [🤖/file/serve](/docs/robots/file-serve/) pricing
78
96
  - [🤖/tlcdn/deliver](/docs/robots/tlcdn-deliver/) pricing
79
97
  - [File Preview Feature](/blog/2024/06/file-preview-with-smart-cdn/) blog post
98
+ `),
99
+ cache_duration: z
100
+ .number()
101
+ .int()
102
+ .min(0)
103
+ .optional()
104
+ .describe(`
105
+ An optional duration in seconds that the served file should be cached. When set, this value is used for both the \`max-age\` (browser cache) and \`s-maxage\` (shared/CDN cache) directives in the \`Cache-Control\` header, overriding the defaults. For example, setting \`cache_duration\` to \`43200\` would cache the file for 12 hours.
106
+
107
+ This is useful for controlling data retention in CDNs. For instance, if your temporary files are deleted after 24 hours, you can set \`cache_duration\` to \`86400\` to ensure cached copies also expire within that window.
80
108
  `),
81
109
  headers: z
82
110
  .record(z.string())
83
111
  .default({
84
112
  'Access-Control-Allow-Headers':
85
- 'X-Requested-With, Content-Type, Cache-Control, Accept, Content-Length, Transloadit-Client, Authorization',
113
+ 'X-Requested-With, Content-Type, Cache-Control, Accept, Content-Length, Transloadit-Client, Authorization, Range, If-Range',
86
114
  'Access-Control-Allow-Methods': 'POST, GET, PUT, DELETE, OPTIONS',
87
115
  'Access-Control-Allow-Origin': '*',
88
- 'Cache-Control': 'public, max-age=259200, s-max-age=86400',
116
+ 'Access-Control-Expose-Headers':
117
+ 'Transloadit-Assembly-URL, Content-Range, Content-Length, Accept-Ranges',
118
+ 'Cache-Control': 'public, max-age=259200, s-maxage=86400',
89
119
  'Content-Type': '${file.mime}; charset=utf-8',
90
- 'Transfer-Encoding': 'chunked',
91
120
  'Transloadit-Assembly': '…',
92
121
  'Transloadit-RequestID': '…',
122
+ 'Accept-Ranges': 'bytes',
93
123
  })
94
124
  .describe(`
95
125
  An object containing a list of headers to be set for a file as we serve it to a CDN/web browser, such as \`{ FileURL: "\${file.url_name}" }\` which will be merged over the defaults, and can include any available [Assembly Variable](/docs/topics/assembly-instructions/#assembly-variables).
126
+
127
+ The \`Accept-Ranges: bytes\` header advertises that HTTP range requests are supported for seekable media playback. This relies on Transloadit's storage backends (S3, GCS, etc.) all honoring Range request headers. The CORS headers include \`Range\` and \`If-Range\` in \`Access-Control-Allow-Headers\` to permit cross-origin range requests, and expose \`Content-Range\`, \`Content-Length\`, and \`Accept-Ranges\` via \`Access-Control-Expose-Headers\` so browser JavaScript can read these values.
96
128
  `),
97
129
  })
98
130
  .strict()
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  bytescount: 4,
9
8
  description:
10
9
  '/file/verify is a simple Robot that helps ensure that the files you upload are of the type you initially intended. This is especially useful when handling user-generated content, where you may not want to run certain Steps in your Template if the user hasn’t uploaded a file of the correct type. Another use case for /file/verify is when a user uploads a ZIP file, but we find that it has a few damaged files inside when we extract it. Perhaps you don’t want to error out, but only send the good files to a next processing step. With /file/verify, you can do exactly that (assuming the default of `error_on_decline`: `true`).',
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: false,
8
7
  bytescount: 1,
9
8
  description:
10
9
  'While 100% security is a myth, having /file/virusscan as a gatekeeper bot helps reject millions of trojans, viruses, malware &amp; other malicious threats before they reach your platform.',
@@ -32,16 +31,19 @@ export const meta: RobotMetaInput = {
32
31
  purpose_word: 'scan for viruses and reject malware',
33
32
  purpose_words: 'Scan files for viruses',
34
33
  service_slug: 'file-filtering',
35
- slot_count: 38,
34
+ slot_count: 16,
36
35
  title: 'Scan files for viruses',
37
36
  typical_file_size_mb: 1.2,
38
37
  typical_file_type: 'file',
39
38
  name: 'FileVirusscanRobot',
40
39
  priceFactor: 1,
41
- queueSlotCount: 38,
40
+ queueSlotCount: 16,
42
41
  minimumCharge: 1048576,
43
42
  lazyLoad: true,
44
- installVersionFile: process.env.API2_CLAMD_INSTALL_VERSION_FILE || '',
43
+ installVersionFile:
44
+ typeof process !== 'undefined' && process.env.API2_CLAMD_INSTALL_VERSION_FILE
45
+ ? process.env.API2_CLAMD_INSTALL_VERSION_FILE
46
+ : '',
45
47
  isAllowedForUrlTransform: false,
46
48
  trackOutputFileSize: true,
47
49
  isInternal: false,
@@ -6,6 +6,16 @@ import { interpolateRobot, robotBase, robotUse } from './_instructions-primitive
6
6
  // @ts-expect-error - FileWatermarkRobot is not ready yet @TODO please supply missing keys
7
7
  export const meta: RobotMetaInput = {
8
8
  name: 'FileWatermarkRobot',
9
+ example_code: {
10
+ steps: {
11
+ watermarked: {
12
+ robot: '/file/watermark',
13
+ use: ':original',
14
+ randomize: true,
15
+ },
16
+ },
17
+ },
18
+ example_code_description: 'Apply randomized watermarking to uploaded files:',
9
19
  priceFactor: 4,
10
20
  queueSlotCount: 20,
11
21
  isAllowedForUrlTransform: true,
@@ -10,7 +10,6 @@ import {
10
10
  } from './_instructions-primitives.ts'
11
11
 
12
12
  export const meta: RobotMetaInput = {
13
- allowed_for_url_transform: true,
14
13
  bytescount: 10,
15
14
  discount_factor: 0.1,
16
15
  discount_pct: 90,
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { ftpBase, interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  bytescount: 6,
9
8
  discount_factor: 0.15000150001500018,
10
9
  discount_pct: 84.99984999849998,
@@ -13,7 +13,6 @@ import {
13
13
  } from './_instructions-primitives.ts'
14
14
 
15
15
  export const meta: RobotMetaInput = {
16
- allowed_for_url_transform: true,
17
16
  bytescount: 10,
18
17
  discount_factor: 0.1,
19
18
  discount_pct: 90,
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { googleBase, interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  bytescount: 6,
9
8
  discount_factor: 0.15000150001500018,
10
9
  discount_pct: 84.99984999849998,
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  bytescount: 1,
9
8
  discount_factor: 1,
10
9
  discount_pct: 0,
@@ -9,7 +9,6 @@ import {
9
9
  } from './_instructions-primitives.ts'
10
10
 
11
11
  export const meta: RobotMetaInput = {
12
- allowed_for_url_transform: true,
13
12
  bytescount: 10,
14
13
  discount_factor: 0.1,
15
14
  discount_pct: 90,
@@ -4,7 +4,6 @@ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
4
  import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
5
 
6
6
  export const meta: RobotMetaInput = {
7
- allowed_for_url_transform: true,
8
7
  discount_factor: 1,
9
8
  bytescount: 1,
10
9
  discount_pct: 0,
@@ -48,7 +47,10 @@ export const robotImageBgremoveInstructionsSchema = robotBase
48
47
  .enum(['foreground', 'background'])
49
48
  .optional()
50
49
  .describe('Region to select and keep in the image. The other region is removed.'),
51
- format: z.enum(['png', 'gif', 'webp']).optional().describe('Format of the generated image.'),
50
+ format: z
51
+ .enum(['png', 'gif', 'webp'])
52
+ .default('png')
53
+ .describe('Format of the generated image. Defaults to PNG when not provided.'),
52
54
  provider: z
53
55
  .enum(['transloadit', 'replicate', 'fal'])
54
56
  .optional()
@@ -0,0 +1,167 @@
1
+ import { z } from 'zod'
2
+
3
+ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
+ import { interpolateRobot, robotBase, robotUse } from './_instructions-primitives.ts'
5
+
6
+ export const meta: RobotMetaInput = {
7
+ bytescount: 1,
8
+ discount_factor: 1,
9
+ discount_pct: 0,
10
+ example_code: {
11
+ steps: {
12
+ copyright_checked: {
13
+ robot: '/image/copyrightdetect',
14
+ use: ':original',
15
+ confidence_threshold: 80,
16
+ error_on_decline: true,
17
+ error_msg: 'This image appears to be a known stock photo. Please upload original content.',
18
+ },
19
+ },
20
+ },
21
+ example_code_description:
22
+ 'Detect known stock photos and copyrighted works in uploaded images and reject flagged files:',
23
+ extended_description: `
24
+ > [!Note]
25
+ > This <dfn>Robot</dfn> detects **known stock photos, brand logos, and watermarked images** by performing reverse image lookups against web databases. It is best understood as "stock photo detection" — it tells you if an uploaded image matches a known copyrighted work in indexed databases (Getty Images, Shutterstock, Adobe Stock, etc.), not whether an image is copyrighted in the legal sense (since technically all photos are copyrighted by their creator).
26
+
27
+ > [!Warning]
28
+ > This <dfn>Robot</dfn> provides a **risk signal**, not a legal determination. Results should be interpreted as "potentially copyrighted" — never as definitive proof of infringement. Copyright law varies by jurisdiction and the system cannot know if a user holds a valid license. We recommend using this Robot as one input in a broader content moderation workflow.
29
+
30
+ > [!Warning]
31
+ > Transloadit aims to be deterministic, but this <dfn>Robot</dfn> uses third-party AI services. The providers will evolve their models over time, giving different responses for the same input images. Avoid relying on exact responses in your tests and application.
32
+
33
+ > [!Tip]
34
+ > If you want to keep only files below your confidence threshold (for example keep 20 out of 100), set \`format\` to \`"meta"\` and add a [🤖/file/filter](/docs/robots/file-filter/) Step after this one:
35
+ >
36
+ > ~~~json
37
+ > {
38
+ > "steps": {
39
+ > "copyright_scan": {
40
+ > "robot": "/image/copyrightdetect",
41
+ > "use": ":original",
42
+ > "format": "meta",
43
+ > "confidence_threshold": 80,
44
+ > "error_on_decline": false
45
+ > },
46
+ > "keep_safe": {
47
+ > "robot": "/file/filter",
48
+ > "use": "copyright_scan",
49
+ > "declines": "\${file.meta.copyright?.flagged === true}"
50
+ > }
51
+ > }
52
+ > }
53
+ > ~~~
54
+ >
55
+ > In this setup, files with at least one match at or above your threshold are declined, and only the remaining files continue to later Steps.
56
+ `,
57
+ minimum_charge: 1572864,
58
+ output_factor: 0.05,
59
+ override_lvl1: 'Artificial Intelligence',
60
+ purpose_sentence:
61
+ 'detects known stock photos, brand logos, and watermarked images in uploaded files using reverse image search',
62
+ purpose_verb: 'detect',
63
+ purpose_word: 'detect stock photos and copyrighted works',
64
+ purpose_words: 'Detect known stock photos and copyrighted works in images',
65
+ service_slug: 'artificial-intelligence',
66
+ slot_count: 10,
67
+ title: 'Detect known stock photos and copyrighted works in images',
68
+ typical_file_size_mb: 0.8,
69
+ typical_file_type: 'image',
70
+ name: 'ImageCopyrightdetectRobot',
71
+ priceFactor: 1,
72
+ queueSlotCount: 10,
73
+ minimumChargeUsd: 0.0013,
74
+ isAllowedForUrlTransform: true,
75
+ trackOutputFileSize: true,
76
+ isInternal: false,
77
+ removeJobResultFilesFromDiskRightAfterStoringOnS3: false,
78
+ stage: 'alpha',
79
+ }
80
+
81
+ export const robotImageCopyrightdetectInstructionsSchema = robotBase
82
+ .merge(robotUse)
83
+ .extend({
84
+ robot: z.literal('/image/copyrightdetect').describe(`
85
+ Detects known stock photos, brand logos, and watermarked images in uploaded files by performing reverse image lookups against web databases. This is best understood as "stock photo detection" — it identifies whether an uploaded image matches a known copyrighted work in indexed databases (Getty Images, Shutterstock, Adobe Stock, etc.).
86
+
87
+ Returns a \`licenses[]\` array with match details including source collection, license type, confidence scores, and source URLs. Can optionally halt the <dfn>Assembly</dfn> when a known copyrighted work is detected, similar to how \`/file/virusscan\` handles malicious files.
88
+
89
+ This <dfn>Robot</dfn> provides a **risk signal**, not a legal determination. A match means the image was found in a stock photo or rights-managed database — it does not mean the user lacks a valid license.
90
+ `),
91
+ confidence_threshold: z
92
+ .number()
93
+ .min(0)
94
+ .max(100)
95
+ .default(80)
96
+ .describe(`
97
+ Minimum confidence percentage (0\u2013100) for a match to be considered a copyright concern. Matches below this threshold are still returned in results but not flagged. Higher values reduce false positives but may miss some matches.
98
+ `),
99
+ categories: z
100
+ .array(z.enum(['stock_photo', 'brand_logo', 'artwork', 'watermarked', 'all']))
101
+ .nonempty()
102
+ .default(['all'])
103
+ .describe(`
104
+ Which categories of copyrighted content to detect.
105
+
106
+ - \`"stock_photo"\` \u2014 Known stock photography (Shutterstock, Getty, Adobe Stock, etc.)
107
+ - \`"brand_logo"\` \u2014 Registered brand logos and trademarks
108
+ - \`"artwork"\` \u2014 Famous artworks and illustrations
109
+ - \`"watermarked"\` \u2014 Images containing visible watermarks
110
+ - \`"all"\` \u2014 All categories
111
+ `),
112
+ error_on_decline: z
113
+ .boolean()
114
+ .default(false)
115
+ .describe(`
116
+ If set to \`true\` and one or more files match a known stock photo or copyrighted work (above the \`confidence_threshold\`), the <dfn>Assembly</dfn> will be stopped and marked with an error. Works the same way as \`/file/virusscan\`'s \`error_on_decline\`.
117
+ `),
118
+ error_msg: z
119
+ .string()
120
+ .default('One of your files matched a known stock photo or copyrighted work')
121
+ .describe(`
122
+ The error message shown to your users (such as by Uppy) when a file is declined and \`error_on_decline\` is set to \`true\`.
123
+ `),
124
+ format: z
125
+ .enum(['json', 'meta'])
126
+ .default('json')
127
+ .describe(`
128
+ In what format to return the detection results.
129
+
130
+ - \`"json"\` returns a JSON file with full match details including \`licenses[]\`, plus summary fields \`flagged\`, \`max_confidence\`, and \`confidence_threshold\`.
131
+ - \`"meta"\` does not return a file, but stores the same data object (including \`licenses[]\`, \`flagged\`, \`max_confidence\`, and \`confidence_threshold\`) inside Transloadit's file object (under \`\${file.meta.copyright}\`) that's passed around between encoding <dfn>Steps</dfn>, so that you can use the values to filter on them, etc.
132
+ `),
133
+ })
134
+ .strict()
135
+
136
+ export const robotImageCopyrightdetectInstructionsWithHiddenFieldsSchema =
137
+ robotImageCopyrightdetectInstructionsSchema.extend({
138
+ result: z
139
+ .union([z.literal('debug'), robotImageCopyrightdetectInstructionsSchema.shape.result])
140
+ .optional(),
141
+ })
142
+
143
+ export type RobotImageCopyrightdetectInstructions = z.infer<
144
+ typeof robotImageCopyrightdetectInstructionsSchema
145
+ >
146
+ export type RobotImageCopyrightdetectInstructionsWithHiddenFields = z.infer<
147
+ typeof robotImageCopyrightdetectInstructionsWithHiddenFieldsSchema
148
+ >
149
+
150
+ export const interpolatableRobotImageCopyrightdetectInstructionsSchema = interpolateRobot(
151
+ robotImageCopyrightdetectInstructionsSchema,
152
+ )
153
+ export type InterpolatableRobotImageCopyrightdetectInstructions =
154
+ InterpolatableRobotImageCopyrightdetectInstructionsInput
155
+
156
+ export type InterpolatableRobotImageCopyrightdetectInstructionsInput = z.input<
157
+ typeof interpolatableRobotImageCopyrightdetectInstructionsSchema
158
+ >
159
+
160
+ export const interpolatableRobotImageCopyrightdetectInstructionsWithHiddenFieldsSchema =
161
+ interpolateRobot(robotImageCopyrightdetectInstructionsWithHiddenFieldsSchema)
162
+ export type InterpolatableRobotImageCopyrightdetectInstructionsWithHiddenFields = z.infer<
163
+ typeof interpolatableRobotImageCopyrightdetectInstructionsWithHiddenFieldsSchema
164
+ >
165
+ export type InterpolatableRobotImageCopyrightdetectInstructionsWithHiddenFieldsInput = z.input<
166
+ typeof interpolatableRobotImageCopyrightdetectInstructionsWithHiddenFieldsSchema
167
+ >
@@ -10,7 +10,6 @@ import {
10
10
  } from './_instructions-primitives.ts'
11
11
 
12
12
  export const meta: RobotMetaInput = {
13
- allowed_for_url_transform: true,
14
13
  bytescount: 1,
15
14
  discount_factor: 1,
16
15
  discount_pct: 0,