transloadit 4.7.4 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. package/README.md +915 -5
  2. package/dist/Transloadit.d.ts +3 -3
  3. package/dist/Transloadit.d.ts.map +1 -1
  4. package/dist/Transloadit.js +2 -2
  5. package/dist/Transloadit.js.map +1 -1
  6. package/dist/alphalib/assembly-linter.js +1 -1
  7. package/dist/alphalib/assembly-linter.js.map +1 -1
  8. package/dist/alphalib/stepParsing.js +2 -2
  9. package/dist/alphalib/stepParsing.js.map +1 -1
  10. package/dist/alphalib/types/assembliesGet.d.ts +5 -0
  11. package/dist/alphalib/types/assembliesGet.d.ts.map +1 -1
  12. package/dist/alphalib/types/assemblyReplay.d.ts +7 -7860
  13. package/dist/alphalib/types/assemblyReplay.d.ts.map +1 -1
  14. package/dist/alphalib/types/assemblyReplayNotification.d.ts +7 -7860
  15. package/dist/alphalib/types/assemblyReplayNotification.d.ts.map +1 -1
  16. package/dist/alphalib/types/assemblyStatus.d.ts +4822 -313
  17. package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
  18. package/dist/alphalib/types/assemblyStatus.js +40 -2
  19. package/dist/alphalib/types/assemblyStatus.js.map +1 -1
  20. package/dist/alphalib/types/bill.d.ts +5 -0
  21. package/dist/alphalib/types/bill.d.ts.map +1 -1
  22. package/dist/alphalib/types/builtinTemplates.d.ts +83 -0
  23. package/dist/alphalib/types/builtinTemplates.d.ts.map +1 -0
  24. package/dist/alphalib/types/builtinTemplates.js +19 -0
  25. package/dist/alphalib/types/builtinTemplates.js.map +1 -0
  26. package/dist/alphalib/types/robots/_index.d.ts +903 -72620
  27. package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
  28. package/dist/alphalib/types/robots/_index.js +62 -11
  29. package/dist/alphalib/types/robots/_index.js.map +1 -1
  30. package/dist/alphalib/types/robots/_instructions-primitives.d.ts +41 -10
  31. package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
  32. package/dist/alphalib/types/robots/_instructions-primitives.js +89 -3
  33. package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
  34. package/dist/alphalib/types/robots/ai-chat.d.ts +33 -0
  35. package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
  36. package/dist/alphalib/types/robots/ai-chat.js +28 -4
  37. package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
  38. package/dist/alphalib/types/robots/assembly-savejson.d.ts.map +1 -1
  39. package/dist/alphalib/types/robots/assembly-savejson.js +8 -0
  40. package/dist/alphalib/types/robots/assembly-savejson.js.map +1 -1
  41. package/dist/alphalib/types/robots/audio-artwork.d.ts.map +1 -1
  42. package/dist/alphalib/types/robots/audio-artwork.js +4 -5
  43. package/dist/alphalib/types/robots/audio-artwork.js.map +1 -1
  44. package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
  45. package/dist/alphalib/types/robots/audio-concat.js +1 -2
  46. package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
  47. package/dist/alphalib/types/robots/audio-encode.d.ts.map +1 -1
  48. package/dist/alphalib/types/robots/audio-encode.js +1 -2
  49. package/dist/alphalib/types/robots/audio-encode.js.map +1 -1
  50. package/dist/alphalib/types/robots/audio-loop.d.ts.map +1 -1
  51. package/dist/alphalib/types/robots/audio-loop.js +1 -2
  52. package/dist/alphalib/types/robots/audio-loop.js.map +1 -1
  53. package/dist/alphalib/types/robots/audio-merge.d.ts.map +1 -1
  54. package/dist/alphalib/types/robots/audio-merge.js +1 -2
  55. package/dist/alphalib/types/robots/audio-merge.js.map +1 -1
  56. package/dist/alphalib/types/robots/audio-split.d.ts +2936 -0
  57. package/dist/alphalib/types/robots/audio-split.d.ts.map +1 -0
  58. package/dist/alphalib/types/robots/audio-split.js +88 -0
  59. package/dist/alphalib/types/robots/audio-split.js.map +1 -0
  60. package/dist/alphalib/types/robots/audio-waveform.d.ts +92 -6
  61. package/dist/alphalib/types/robots/audio-waveform.d.ts.map +1 -1
  62. package/dist/alphalib/types/robots/audio-waveform.js +72 -6
  63. package/dist/alphalib/types/robots/audio-waveform.js.map +1 -1
  64. package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
  65. package/dist/alphalib/types/robots/azure-import.js +0 -1
  66. package/dist/alphalib/types/robots/azure-import.js.map +1 -1
  67. package/dist/alphalib/types/robots/azure-store.d.ts.map +1 -1
  68. package/dist/alphalib/types/robots/azure-store.js +0 -1
  69. package/dist/alphalib/types/robots/azure-store.js.map +1 -1
  70. package/dist/alphalib/types/robots/backblaze-import.d.ts.map +1 -1
  71. package/dist/alphalib/types/robots/backblaze-import.js +0 -1
  72. package/dist/alphalib/types/robots/backblaze-import.js.map +1 -1
  73. package/dist/alphalib/types/robots/backblaze-store.d.ts.map +1 -1
  74. package/dist/alphalib/types/robots/backblaze-store.js +0 -1
  75. package/dist/alphalib/types/robots/backblaze-store.js.map +1 -1
  76. package/dist/alphalib/types/robots/box-import.d.ts +150 -0
  77. package/dist/alphalib/types/robots/box-import.d.ts.map +1 -0
  78. package/dist/alphalib/types/robots/box-import.js +63 -0
  79. package/dist/alphalib/types/robots/box-import.js.map +1 -0
  80. package/dist/alphalib/types/robots/box-store.d.ts +455 -0
  81. package/dist/alphalib/types/robots/box-store.d.ts.map +1 -0
  82. package/dist/alphalib/types/robots/box-store.js +66 -0
  83. package/dist/alphalib/types/robots/box-store.js.map +1 -0
  84. package/dist/alphalib/types/robots/cloudfiles-import.d.ts.map +1 -1
  85. package/dist/alphalib/types/robots/cloudfiles-import.js +0 -1
  86. package/dist/alphalib/types/robots/cloudfiles-import.js.map +1 -1
  87. package/dist/alphalib/types/robots/cloudfiles-store.d.ts.map +1 -1
  88. package/dist/alphalib/types/robots/cloudfiles-store.js +0 -1
  89. package/dist/alphalib/types/robots/cloudfiles-store.js.map +1 -1
  90. package/dist/alphalib/types/robots/cloudflare-import.d.ts.map +1 -1
  91. package/dist/alphalib/types/robots/cloudflare-import.js +0 -1
  92. package/dist/alphalib/types/robots/cloudflare-import.js.map +1 -1
  93. package/dist/alphalib/types/robots/cloudflare-store.d.ts.map +1 -1
  94. package/dist/alphalib/types/robots/cloudflare-store.js +0 -1
  95. package/dist/alphalib/types/robots/cloudflare-store.js.map +1 -1
  96. package/dist/alphalib/types/robots/digitalocean-import.d.ts.map +1 -1
  97. package/dist/alphalib/types/robots/digitalocean-import.js +0 -1
  98. package/dist/alphalib/types/robots/digitalocean-import.js.map +1 -1
  99. package/dist/alphalib/types/robots/digitalocean-store.d.ts.map +1 -1
  100. package/dist/alphalib/types/robots/digitalocean-store.js +0 -1
  101. package/dist/alphalib/types/robots/digitalocean-store.js.map +1 -1
  102. package/dist/alphalib/types/robots/document-autorotate.d.ts.map +1 -1
  103. package/dist/alphalib/types/robots/document-autorotate.js +8 -1
  104. package/dist/alphalib/types/robots/document-autorotate.js.map +1 -1
  105. package/dist/alphalib/types/robots/document-convert.d.ts +8 -8
  106. package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
  107. package/dist/alphalib/types/robots/document-convert.js +9 -3
  108. package/dist/alphalib/types/robots/document-convert.js.map +1 -1
  109. package/dist/alphalib/types/robots/document-merge.d.ts.map +1 -1
  110. package/dist/alphalib/types/robots/document-merge.js +0 -1
  111. package/dist/alphalib/types/robots/document-merge.js.map +1 -1
  112. package/dist/alphalib/types/robots/document-ocr.d.ts.map +1 -1
  113. package/dist/alphalib/types/robots/document-ocr.js +0 -1
  114. package/dist/alphalib/types/robots/document-ocr.js.map +1 -1
  115. package/dist/alphalib/types/robots/document-optimize.d.ts.map +1 -1
  116. package/dist/alphalib/types/robots/document-optimize.js +0 -1
  117. package/dist/alphalib/types/robots/document-optimize.js.map +1 -1
  118. package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
  119. package/dist/alphalib/types/robots/document-split.js +9 -1
  120. package/dist/alphalib/types/robots/document-split.js.map +1 -1
  121. package/dist/alphalib/types/robots/document-thumbs.d.ts +12 -0
  122. package/dist/alphalib/types/robots/document-thumbs.d.ts.map +1 -1
  123. package/dist/alphalib/types/robots/document-thumbs.js +23 -4
  124. package/dist/alphalib/types/robots/document-thumbs.js.map +1 -1
  125. package/dist/alphalib/types/robots/dropbox-import.d.ts.map +1 -1
  126. package/dist/alphalib/types/robots/dropbox-import.js +0 -1
  127. package/dist/alphalib/types/robots/dropbox-import.js.map +1 -1
  128. package/dist/alphalib/types/robots/dropbox-store.d.ts.map +1 -1
  129. package/dist/alphalib/types/robots/dropbox-store.js +0 -1
  130. package/dist/alphalib/types/robots/dropbox-store.js.map +1 -1
  131. package/dist/alphalib/types/robots/edgly-deliver.d.ts.map +1 -1
  132. package/dist/alphalib/types/robots/edgly-deliver.js +8 -1
  133. package/dist/alphalib/types/robots/edgly-deliver.js.map +1 -1
  134. package/dist/alphalib/types/robots/file-compress.d.ts +12 -0
  135. package/dist/alphalib/types/robots/file-compress.d.ts.map +1 -1
  136. package/dist/alphalib/types/robots/file-compress.js +8 -1
  137. package/dist/alphalib/types/robots/file-compress.js.map +1 -1
  138. package/dist/alphalib/types/robots/file-decompress.d.ts +24 -0
  139. package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
  140. package/dist/alphalib/types/robots/file-decompress.js +30 -5
  141. package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
  142. package/dist/alphalib/types/robots/file-filter.d.ts.map +1 -1
  143. package/dist/alphalib/types/robots/file-filter.js +23 -6
  144. package/dist/alphalib/types/robots/file-filter.js.map +1 -1
  145. package/dist/alphalib/types/robots/file-hash.d.ts +24 -0
  146. package/dist/alphalib/types/robots/file-hash.d.ts.map +1 -1
  147. package/dist/alphalib/types/robots/file-hash.js +23 -1
  148. package/dist/alphalib/types/robots/file-hash.js.map +1 -1
  149. package/dist/alphalib/types/robots/file-preview.d.ts +12 -0
  150. package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
  151. package/dist/alphalib/types/robots/file-preview.js +8 -1
  152. package/dist/alphalib/types/robots/file-preview.js.map +1 -1
  153. package/dist/alphalib/types/robots/file-read.d.ts.map +1 -1
  154. package/dist/alphalib/types/robots/file-read.js +9 -1
  155. package/dist/alphalib/types/robots/file-read.js.map +1 -1
  156. package/dist/alphalib/types/robots/file-serve.d.ts +12 -0
  157. package/dist/alphalib/types/robots/file-serve.d.ts.map +1 -1
  158. package/dist/alphalib/types/robots/file-serve.js +38 -7
  159. package/dist/alphalib/types/robots/file-serve.js.map +1 -1
  160. package/dist/alphalib/types/robots/file-verify.d.ts.map +1 -1
  161. package/dist/alphalib/types/robots/file-verify.js +0 -1
  162. package/dist/alphalib/types/robots/file-verify.js.map +1 -1
  163. package/dist/alphalib/types/robots/file-virusscan.d.ts.map +1 -1
  164. package/dist/alphalib/types/robots/file-virusscan.js +5 -4
  165. package/dist/alphalib/types/robots/file-virusscan.js.map +1 -1
  166. package/dist/alphalib/types/robots/file-watermark.d.ts.map +1 -1
  167. package/dist/alphalib/types/robots/file-watermark.js +10 -0
  168. package/dist/alphalib/types/robots/file-watermark.js.map +1 -1
  169. package/dist/alphalib/types/robots/ftp-import.d.ts.map +1 -1
  170. package/dist/alphalib/types/robots/ftp-import.js +0 -1
  171. package/dist/alphalib/types/robots/ftp-import.js.map +1 -1
  172. package/dist/alphalib/types/robots/ftp-store.d.ts.map +1 -1
  173. package/dist/alphalib/types/robots/ftp-store.js +0 -1
  174. package/dist/alphalib/types/robots/ftp-store.js.map +1 -1
  175. package/dist/alphalib/types/robots/google-import.d.ts.map +1 -1
  176. package/dist/alphalib/types/robots/google-import.js +0 -1
  177. package/dist/alphalib/types/robots/google-import.js.map +1 -1
  178. package/dist/alphalib/types/robots/google-store.d.ts.map +1 -1
  179. package/dist/alphalib/types/robots/google-store.js +0 -1
  180. package/dist/alphalib/types/robots/google-store.js.map +1 -1
  181. package/dist/alphalib/types/robots/html-convert.d.ts.map +1 -1
  182. package/dist/alphalib/types/robots/html-convert.js +0 -1
  183. package/dist/alphalib/types/robots/html-convert.js.map +1 -1
  184. package/dist/alphalib/types/robots/http-import.d.ts.map +1 -1
  185. package/dist/alphalib/types/robots/http-import.js +0 -1
  186. package/dist/alphalib/types/robots/http-import.js.map +1 -1
  187. package/dist/alphalib/types/robots/image-bgremove.d.ts +8 -8
  188. package/dist/alphalib/types/robots/image-bgremove.d.ts.map +1 -1
  189. package/dist/alphalib/types/robots/image-bgremove.js +4 -2
  190. package/dist/alphalib/types/robots/image-bgremove.js.map +1 -1
  191. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts +465 -0
  192. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts.map +1 -0
  193. package/dist/alphalib/types/robots/image-copyrightdetect.js +136 -0
  194. package/dist/alphalib/types/robots/image-copyrightdetect.js.map +1 -0
  195. package/dist/alphalib/types/robots/image-describe.d.ts.map +1 -1
  196. package/dist/alphalib/types/robots/image-describe.js +0 -1
  197. package/dist/alphalib/types/robots/image-describe.js.map +1 -1
  198. package/dist/alphalib/types/robots/image-enhance.d.ts +502 -0
  199. package/dist/alphalib/types/robots/image-enhance.d.ts.map +1 -0
  200. package/dist/alphalib/types/robots/image-enhance.js +146 -0
  201. package/dist/alphalib/types/robots/image-enhance.js.map +1 -0
  202. package/dist/alphalib/types/robots/image-facedetect.d.ts.map +1 -1
  203. package/dist/alphalib/types/robots/image-facedetect.js +0 -1
  204. package/dist/alphalib/types/robots/image-facedetect.js.map +1 -1
  205. package/dist/alphalib/types/robots/image-generate.d.ts +4 -5
  206. package/dist/alphalib/types/robots/image-generate.d.ts.map +1 -1
  207. package/dist/alphalib/types/robots/image-generate.js +62 -8
  208. package/dist/alphalib/types/robots/image-generate.js.map +1 -1
  209. package/dist/alphalib/types/robots/image-merge.d.ts +12 -12
  210. package/dist/alphalib/types/robots/image-merge.d.ts.map +1 -1
  211. package/dist/alphalib/types/robots/image-merge.js +0 -1
  212. package/dist/alphalib/types/robots/image-merge.js.map +1 -1
  213. package/dist/alphalib/types/robots/image-ocr.d.ts.map +1 -1
  214. package/dist/alphalib/types/robots/image-ocr.js +0 -1
  215. package/dist/alphalib/types/robots/image-ocr.js.map +1 -1
  216. package/dist/alphalib/types/robots/image-optimize.d.ts +12 -0
  217. package/dist/alphalib/types/robots/image-optimize.d.ts.map +1 -1
  218. package/dist/alphalib/types/robots/image-optimize.js +16 -3
  219. package/dist/alphalib/types/robots/image-optimize.js.map +1 -1
  220. package/dist/alphalib/types/robots/image-resize.d.ts +20 -8
  221. package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
  222. package/dist/alphalib/types/robots/image-resize.js +37 -1
  223. package/dist/alphalib/types/robots/image-resize.js.map +1 -1
  224. package/dist/alphalib/types/robots/image-upscale.d.ts +447 -0
  225. package/dist/alphalib/types/robots/image-upscale.d.ts.map +1 -0
  226. package/dist/alphalib/types/robots/image-upscale.js +65 -0
  227. package/dist/alphalib/types/robots/image-upscale.js.map +1 -0
  228. package/dist/alphalib/types/robots/mega-import.d.ts +244 -0
  229. package/dist/alphalib/types/robots/mega-import.d.ts.map +1 -0
  230. package/dist/alphalib/types/robots/mega-import.js +84 -0
  231. package/dist/alphalib/types/robots/mega-import.js.map +1 -0
  232. package/dist/alphalib/types/robots/mega-store.d.ts +526 -0
  233. package/dist/alphalib/types/robots/mega-store.d.ts.map +1 -0
  234. package/dist/alphalib/types/robots/mega-store.js +82 -0
  235. package/dist/alphalib/types/robots/mega-store.js.map +1 -0
  236. package/dist/alphalib/types/robots/meta-read.d.ts.map +1 -1
  237. package/dist/alphalib/types/robots/meta-read.js +8 -0
  238. package/dist/alphalib/types/robots/meta-read.js.map +1 -1
  239. package/dist/alphalib/types/robots/meta-write.d.ts.map +1 -1
  240. package/dist/alphalib/types/robots/meta-write.js +0 -1
  241. package/dist/alphalib/types/robots/meta-write.js.map +1 -1
  242. package/dist/alphalib/types/robots/minio-import.d.ts.map +1 -1
  243. package/dist/alphalib/types/robots/minio-import.js +0 -1
  244. package/dist/alphalib/types/robots/minio-import.js.map +1 -1
  245. package/dist/alphalib/types/robots/minio-store.d.ts.map +1 -1
  246. package/dist/alphalib/types/robots/minio-store.js +0 -1
  247. package/dist/alphalib/types/robots/minio-store.js.map +1 -1
  248. package/dist/alphalib/types/robots/progress-simulate.d.ts.map +1 -1
  249. package/dist/alphalib/types/robots/progress-simulate.js +13 -0
  250. package/dist/alphalib/types/robots/progress-simulate.js.map +1 -1
  251. package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
  252. package/dist/alphalib/types/robots/s3-import.js +0 -1
  253. package/dist/alphalib/types/robots/s3-import.js.map +1 -1
  254. package/dist/alphalib/types/robots/s3-store.d.ts.map +1 -1
  255. package/dist/alphalib/types/robots/s3-store.js +0 -1
  256. package/dist/alphalib/types/robots/s3-store.js.map +1 -1
  257. package/dist/alphalib/types/robots/script-run.d.ts.map +1 -1
  258. package/dist/alphalib/types/robots/script-run.js +10 -1
  259. package/dist/alphalib/types/robots/script-run.js.map +1 -1
  260. package/dist/alphalib/types/robots/sftp-import.d.ts.map +1 -1
  261. package/dist/alphalib/types/robots/sftp-import.js +0 -1
  262. package/dist/alphalib/types/robots/sftp-import.js.map +1 -1
  263. package/dist/alphalib/types/robots/sftp-store.d.ts.map +1 -1
  264. package/dist/alphalib/types/robots/sftp-store.js +0 -1
  265. package/dist/alphalib/types/robots/sftp-store.js.map +1 -1
  266. package/dist/alphalib/types/robots/speech-transcribe.d.ts.map +1 -1
  267. package/dist/alphalib/types/robots/speech-transcribe.js +0 -1
  268. package/dist/alphalib/types/robots/speech-transcribe.js.map +1 -1
  269. package/dist/alphalib/types/robots/supabase-import.d.ts.map +1 -1
  270. package/dist/alphalib/types/robots/supabase-import.js +0 -1
  271. package/dist/alphalib/types/robots/supabase-import.js.map +1 -1
  272. package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
  273. package/dist/alphalib/types/robots/supabase-store.js +0 -1
  274. package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
  275. package/dist/alphalib/types/robots/swift-import.d.ts.map +1 -1
  276. package/dist/alphalib/types/robots/swift-import.js +0 -1
  277. package/dist/alphalib/types/robots/swift-import.js.map +1 -1
  278. package/dist/alphalib/types/robots/swift-store.d.ts.map +1 -1
  279. package/dist/alphalib/types/robots/swift-store.js +0 -1
  280. package/dist/alphalib/types/robots/swift-store.js.map +1 -1
  281. package/dist/alphalib/types/robots/text-speak.d.ts.map +1 -1
  282. package/dist/alphalib/types/robots/text-speak.js +0 -1
  283. package/dist/alphalib/types/robots/text-speak.js.map +1 -1
  284. package/dist/alphalib/types/robots/text-translate.d.ts.map +1 -1
  285. package/dist/alphalib/types/robots/text-translate.js +0 -1
  286. package/dist/alphalib/types/robots/text-translate.js.map +1 -1
  287. package/dist/alphalib/types/robots/tigris-import.d.ts.map +1 -1
  288. package/dist/alphalib/types/robots/tigris-import.js +0 -1
  289. package/dist/alphalib/types/robots/tigris-import.js.map +1 -1
  290. package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
  291. package/dist/alphalib/types/robots/tigris-store.js +0 -1
  292. package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
  293. package/dist/alphalib/types/robots/tlcdn-deliver.d.ts.map +1 -1
  294. package/dist/alphalib/types/robots/tlcdn-deliver.js +8 -1
  295. package/dist/alphalib/types/robots/tlcdn-deliver.js.map +1 -1
  296. package/dist/alphalib/types/robots/tus-store.d.ts.map +1 -1
  297. package/dist/alphalib/types/robots/tus-store.js +1 -14
  298. package/dist/alphalib/types/robots/tus-store.js.map +1 -1
  299. package/dist/alphalib/types/robots/upload-handle.d.ts.map +1 -1
  300. package/dist/alphalib/types/robots/upload-handle.js +0 -1
  301. package/dist/alphalib/types/robots/upload-handle.js.map +1 -1
  302. package/dist/alphalib/types/robots/video-adaptive.d.ts +32 -8
  303. package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
  304. package/dist/alphalib/types/robots/video-adaptive.js +22 -6
  305. package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
  306. package/dist/alphalib/types/robots/video-artwork.d.ts +2855 -0
  307. package/dist/alphalib/types/robots/video-artwork.d.ts.map +1 -0
  308. package/dist/alphalib/types/robots/video-artwork.js +66 -0
  309. package/dist/alphalib/types/robots/video-artwork.js.map +1 -0
  310. package/dist/alphalib/types/robots/video-concat.d.ts +36 -0
  311. package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
  312. package/dist/alphalib/types/robots/video-concat.js +30 -1
  313. package/dist/alphalib/types/robots/video-concat.js.map +1 -1
  314. package/dist/alphalib/types/robots/video-encode.d.ts.map +1 -1
  315. package/dist/alphalib/types/robots/video-encode.js +0 -1
  316. package/dist/alphalib/types/robots/video-encode.js.map +1 -1
  317. package/dist/alphalib/types/robots/video-generate.d.ts +594 -0
  318. package/dist/alphalib/types/robots/video-generate.d.ts.map +1 -0
  319. package/dist/alphalib/types/robots/video-generate.js +90 -0
  320. package/dist/alphalib/types/robots/video-generate.js.map +1 -0
  321. package/dist/alphalib/types/robots/video-merge.d.ts +24 -0
  322. package/dist/alphalib/types/robots/video-merge.d.ts.map +1 -1
  323. package/dist/alphalib/types/robots/video-merge.js +33 -1
  324. package/dist/alphalib/types/robots/video-merge.js.map +1 -1
  325. package/dist/alphalib/types/robots/video-ondemand.d.ts.map +1 -1
  326. package/dist/alphalib/types/robots/video-ondemand.js +3 -4
  327. package/dist/alphalib/types/robots/video-ondemand.js.map +1 -1
  328. package/dist/alphalib/types/robots/video-split.d.ts +2939 -0
  329. package/dist/alphalib/types/robots/video-split.d.ts.map +1 -0
  330. package/dist/alphalib/types/robots/video-split.js +78 -0
  331. package/dist/alphalib/types/robots/video-split.js.map +1 -0
  332. package/dist/alphalib/types/robots/video-subtitle.d.ts +52 -4
  333. package/dist/alphalib/types/robots/video-subtitle.d.ts.map +1 -1
  334. package/dist/alphalib/types/robots/video-subtitle.js +61 -8
  335. package/dist/alphalib/types/robots/video-subtitle.js.map +1 -1
  336. package/dist/alphalib/types/robots/video-thumbs.d.ts.map +1 -1
  337. package/dist/alphalib/types/robots/video-thumbs.js +0 -1
  338. package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
  339. package/dist/alphalib/types/robots/vimeo-import.d.ts +4 -4
  340. package/dist/alphalib/types/robots/vimeo-import.d.ts.map +1 -1
  341. package/dist/alphalib/types/robots/vimeo-import.js +0 -1
  342. package/dist/alphalib/types/robots/vimeo-import.js.map +1 -1
  343. package/dist/alphalib/types/robots/vimeo-store.d.ts +2 -2
  344. package/dist/alphalib/types/robots/vimeo-store.d.ts.map +1 -1
  345. package/dist/alphalib/types/robots/vimeo-store.js +14 -3
  346. package/dist/alphalib/types/robots/vimeo-store.js.map +1 -1
  347. package/dist/alphalib/types/robots/wasabi-import.d.ts.map +1 -1
  348. package/dist/alphalib/types/robots/wasabi-import.js +0 -1
  349. package/dist/alphalib/types/robots/wasabi-import.js.map +1 -1
  350. package/dist/alphalib/types/robots/wasabi-store.d.ts.map +1 -1
  351. package/dist/alphalib/types/robots/wasabi-store.js +0 -1
  352. package/dist/alphalib/types/robots/wasabi-store.js.map +1 -1
  353. package/dist/alphalib/types/robots/youtube-store.d.ts.map +1 -1
  354. package/dist/alphalib/types/robots/youtube-store.js +4 -5
  355. package/dist/alphalib/types/robots/youtube-store.js.map +1 -1
  356. package/dist/alphalib/types/skillFrontmatter.d.ts +29 -0
  357. package/dist/alphalib/types/skillFrontmatter.d.ts.map +1 -0
  358. package/dist/alphalib/types/skillFrontmatter.js +19 -0
  359. package/dist/alphalib/types/skillFrontmatter.js.map +1 -0
  360. package/dist/alphalib/types/template.d.ts +77 -132175
  361. package/dist/alphalib/types/template.d.ts.map +1 -1
  362. package/dist/alphalib/types/template.js +26 -3
  363. package/dist/alphalib/types/template.js.map +1 -1
  364. package/dist/alphalib/types/templateCredential.d.ts +13 -3
  365. package/dist/alphalib/types/templateCredential.d.ts.map +1 -1
  366. package/dist/alphalib/types/templateCredential.js +1 -0
  367. package/dist/alphalib/types/templateCredential.js.map +1 -1
  368. package/dist/alphalib/zodParseWithContext.d.ts.map +1 -1
  369. package/dist/alphalib/zodParseWithContext.js +15 -11
  370. package/dist/alphalib/zodParseWithContext.js.map +1 -1
  371. package/dist/cli/commands/assemblies.d.ts +8 -2
  372. package/dist/cli/commands/assemblies.d.ts.map +1 -1
  373. package/dist/cli/commands/assemblies.js +566 -411
  374. package/dist/cli/commands/assemblies.js.map +1 -1
  375. package/dist/cli/commands/index.d.ts.map +1 -1
  376. package/dist/cli/commands/index.js +5 -0
  377. package/dist/cli/commands/index.js.map +1 -1
  378. package/dist/cli/commands/templates.d.ts.map +1 -1
  379. package/dist/cli/commands/templates.js +4 -14
  380. package/dist/cli/commands/templates.js.map +1 -1
  381. package/dist/cli/fileProcessingOptions.d.ts +35 -0
  382. package/dist/cli/fileProcessingOptions.d.ts.map +1 -0
  383. package/dist/cli/fileProcessingOptions.js +182 -0
  384. package/dist/cli/fileProcessingOptions.js.map +1 -0
  385. package/dist/cli/generateIntentDocs.d.ts +6 -0
  386. package/dist/cli/generateIntentDocs.d.ts.map +1 -0
  387. package/dist/cli/generateIntentDocs.js +337 -0
  388. package/dist/cli/generateIntentDocs.js.map +1 -0
  389. package/dist/cli/intentCommandSpecs.d.ts +36 -0
  390. package/dist/cli/intentCommandSpecs.d.ts.map +1 -0
  391. package/dist/cli/intentCommandSpecs.js +179 -0
  392. package/dist/cli/intentCommandSpecs.js.map +1 -0
  393. package/dist/cli/intentCommands.d.ts +13 -0
  394. package/dist/cli/intentCommands.d.ts.map +1 -0
  395. package/dist/cli/intentCommands.js +368 -0
  396. package/dist/cli/intentCommands.js.map +1 -0
  397. package/dist/cli/intentFields.d.ts +25 -0
  398. package/dist/cli/intentFields.d.ts.map +1 -0
  399. package/dist/cli/intentFields.js +298 -0
  400. package/dist/cli/intentFields.js.map +1 -0
  401. package/dist/cli/intentInputPolicy.d.ts +10 -0
  402. package/dist/cli/intentInputPolicy.d.ts.map +1 -0
  403. package/dist/cli/intentInputPolicy.js +2 -0
  404. package/dist/cli/intentInputPolicy.js.map +1 -0
  405. package/dist/cli/intentRuntime.d.ts +114 -0
  406. package/dist/cli/intentRuntime.d.ts.map +1 -0
  407. package/dist/cli/intentRuntime.js +464 -0
  408. package/dist/cli/intentRuntime.js.map +1 -0
  409. package/dist/cli/resultFiles.d.ts +19 -0
  410. package/dist/cli/resultFiles.d.ts.map +1 -0
  411. package/dist/cli/resultFiles.js +66 -0
  412. package/dist/cli/resultFiles.js.map +1 -0
  413. package/dist/cli/resultUrls.d.ts +19 -0
  414. package/dist/cli/resultUrls.d.ts.map +1 -0
  415. package/dist/cli/resultUrls.js +36 -0
  416. package/dist/cli/resultUrls.js.map +1 -0
  417. package/dist/cli/semanticIntents/imageDescribe.d.ts +45 -0
  418. package/dist/cli/semanticIntents/imageDescribe.d.ts.map +1 -0
  419. package/dist/cli/semanticIntents/imageDescribe.js +188 -0
  420. package/dist/cli/semanticIntents/imageDescribe.js.map +1 -0
  421. package/dist/cli/semanticIntents/imageGenerate.d.ts +94 -0
  422. package/dist/cli/semanticIntents/imageGenerate.d.ts.map +1 -0
  423. package/dist/cli/semanticIntents/imageGenerate.js +215 -0
  424. package/dist/cli/semanticIntents/imageGenerate.js.map +1 -0
  425. package/dist/cli/semanticIntents/index.d.ts +20 -0
  426. package/dist/cli/semanticIntents/index.d.ts.map +1 -0
  427. package/dist/cli/semanticIntents/index.js +20 -0
  428. package/dist/cli/semanticIntents/index.js.map +1 -0
  429. package/dist/cli/semanticIntents/markdownPdf.d.ts +4 -0
  430. package/dist/cli/semanticIntents/markdownPdf.d.ts.map +1 -0
  431. package/dist/cli/semanticIntents/markdownPdf.js +93 -0
  432. package/dist/cli/semanticIntents/markdownPdf.js.map +1 -0
  433. package/dist/cli/semanticIntents/parsing.d.ts +11 -0
  434. package/dist/cli/semanticIntents/parsing.d.ts.map +1 -0
  435. package/dist/cli/semanticIntents/parsing.js +29 -0
  436. package/dist/cli/semanticIntents/parsing.js.map +1 -0
  437. package/dist/cli/stepsInput.d.ts +4 -0
  438. package/dist/cli/stepsInput.d.ts.map +1 -0
  439. package/dist/cli/stepsInput.js +23 -0
  440. package/dist/cli/stepsInput.js.map +1 -0
  441. package/dist/cli.d.ts +1 -1
  442. package/dist/cli.d.ts.map +1 -1
  443. package/dist/cli.js +5 -4
  444. package/dist/cli.js.map +1 -1
  445. package/dist/ensureUniqueCounter.d.ts +8 -0
  446. package/dist/ensureUniqueCounter.d.ts.map +1 -0
  447. package/dist/ensureUniqueCounter.js +48 -0
  448. package/dist/ensureUniqueCounter.js.map +1 -0
  449. package/dist/inputFiles.d.ts +9 -0
  450. package/dist/inputFiles.d.ts.map +1 -1
  451. package/dist/inputFiles.js +177 -26
  452. package/dist/inputFiles.js.map +1 -1
  453. package/dist/robots.js +3 -3
  454. package/dist/robots.js.map +1 -1
  455. package/package.json +9 -7
  456. package/src/Transloadit.ts +3 -3
  457. package/src/alphalib/assembly-linter.ts +1 -1
  458. package/src/alphalib/stepParsing.ts +2 -2
  459. package/src/alphalib/types/assemblyStatus.ts +45 -3
  460. package/src/alphalib/types/builtinTemplates.ts +24 -0
  461. package/src/alphalib/types/robots/_index.ts +211 -20
  462. package/src/alphalib/types/robots/_instructions-primitives.ts +93 -3
  463. package/src/alphalib/types/robots/ai-chat.ts +35 -4
  464. package/src/alphalib/types/robots/assembly-savejson.ts +8 -0
  465. package/src/alphalib/types/robots/audio-artwork.ts +4 -5
  466. package/src/alphalib/types/robots/audio-concat.ts +1 -2
  467. package/src/alphalib/types/robots/audio-encode.ts +1 -2
  468. package/src/alphalib/types/robots/audio-loop.ts +1 -2
  469. package/src/alphalib/types/robots/audio-merge.ts +1 -2
  470. package/src/alphalib/types/robots/audio-split.ts +130 -0
  471. package/src/alphalib/types/robots/audio-waveform.ts +90 -6
  472. package/src/alphalib/types/robots/azure-import.ts +0 -1
  473. package/src/alphalib/types/robots/azure-store.ts +0 -1
  474. package/src/alphalib/types/robots/backblaze-import.ts +0 -1
  475. package/src/alphalib/types/robots/backblaze-store.ts +0 -1
  476. package/src/alphalib/types/robots/box-import.ts +97 -0
  477. package/src/alphalib/types/robots/box-store.ts +94 -0
  478. package/src/alphalib/types/robots/cloudfiles-import.ts +0 -1
  479. package/src/alphalib/types/robots/cloudfiles-store.ts +0 -1
  480. package/src/alphalib/types/robots/cloudflare-import.ts +0 -1
  481. package/src/alphalib/types/robots/cloudflare-store.ts +0 -1
  482. package/src/alphalib/types/robots/digitalocean-import.ts +0 -1
  483. package/src/alphalib/types/robots/digitalocean-store.ts +0 -1
  484. package/src/alphalib/types/robots/document-autorotate.ts +8 -1
  485. package/src/alphalib/types/robots/document-convert.ts +10 -3
  486. package/src/alphalib/types/robots/document-merge.ts +0 -1
  487. package/src/alphalib/types/robots/document-ocr.ts +0 -1
  488. package/src/alphalib/types/robots/document-optimize.ts +0 -1
  489. package/src/alphalib/types/robots/document-split.ts +9 -1
  490. package/src/alphalib/types/robots/document-thumbs.ts +26 -4
  491. package/src/alphalib/types/robots/dropbox-import.ts +0 -1
  492. package/src/alphalib/types/robots/dropbox-store.ts +0 -1
  493. package/src/alphalib/types/robots/edgly-deliver.ts +8 -1
  494. package/src/alphalib/types/robots/file-compress.ts +8 -1
  495. package/src/alphalib/types/robots/file-decompress.ts +30 -5
  496. package/src/alphalib/types/robots/file-filter.ts +23 -6
  497. package/src/alphalib/types/robots/file-hash.ts +23 -1
  498. package/src/alphalib/types/robots/file-preview.ts +8 -1
  499. package/src/alphalib/types/robots/file-read.ts +9 -1
  500. package/src/alphalib/types/robots/file-serve.ts +39 -7
  501. package/src/alphalib/types/robots/file-verify.ts +0 -1
  502. package/src/alphalib/types/robots/file-virusscan.ts +6 -4
  503. package/src/alphalib/types/robots/file-watermark.ts +10 -0
  504. package/src/alphalib/types/robots/ftp-import.ts +0 -1
  505. package/src/alphalib/types/robots/ftp-store.ts +0 -1
  506. package/src/alphalib/types/robots/google-import.ts +0 -1
  507. package/src/alphalib/types/robots/google-store.ts +0 -1
  508. package/src/alphalib/types/robots/html-convert.ts +0 -1
  509. package/src/alphalib/types/robots/http-import.ts +0 -1
  510. package/src/alphalib/types/robots/image-bgremove.ts +4 -2
  511. package/src/alphalib/types/robots/image-copyrightdetect.ts +167 -0
  512. package/src/alphalib/types/robots/image-describe.ts +0 -1
  513. package/src/alphalib/types/robots/image-enhance.ts +185 -0
  514. package/src/alphalib/types/robots/image-facedetect.ts +0 -1
  515. package/src/alphalib/types/robots/image-generate.ts +74 -8
  516. package/src/alphalib/types/robots/image-merge.ts +0 -1
  517. package/src/alphalib/types/robots/image-ocr.ts +0 -1
  518. package/src/alphalib/types/robots/image-optimize.ts +16 -3
  519. package/src/alphalib/types/robots/image-resize.ts +37 -1
  520. package/src/alphalib/types/robots/image-upscale.ts +93 -0
  521. package/src/alphalib/types/robots/mega-import.ts +123 -0
  522. package/src/alphalib/types/robots/mega-store.ts +109 -0
  523. package/src/alphalib/types/robots/meta-read.ts +8 -0
  524. package/src/alphalib/types/robots/meta-write.ts +0 -1
  525. package/src/alphalib/types/robots/minio-import.ts +0 -1
  526. package/src/alphalib/types/robots/minio-store.ts +0 -1
  527. package/src/alphalib/types/robots/progress-simulate.ts +13 -0
  528. package/src/alphalib/types/robots/s3-import.ts +0 -1
  529. package/src/alphalib/types/robots/s3-store.ts +0 -1
  530. package/src/alphalib/types/robots/script-run.ts +11 -1
  531. package/src/alphalib/types/robots/sftp-import.ts +0 -1
  532. package/src/alphalib/types/robots/sftp-store.ts +0 -1
  533. package/src/alphalib/types/robots/speech-transcribe.ts +0 -1
  534. package/src/alphalib/types/robots/supabase-import.ts +0 -1
  535. package/src/alphalib/types/robots/supabase-store.ts +0 -1
  536. package/src/alphalib/types/robots/swift-import.ts +0 -1
  537. package/src/alphalib/types/robots/swift-store.ts +0 -1
  538. package/src/alphalib/types/robots/text-speak.ts +0 -1
  539. package/src/alphalib/types/robots/text-translate.ts +0 -1
  540. package/src/alphalib/types/robots/tigris-import.ts +0 -1
  541. package/src/alphalib/types/robots/tigris-store.ts +0 -1
  542. package/src/alphalib/types/robots/tlcdn-deliver.ts +8 -1
  543. package/src/alphalib/types/robots/tus-store.ts +1 -14
  544. package/src/alphalib/types/robots/upload-handle.ts +0 -1
  545. package/src/alphalib/types/robots/video-adaptive.ts +22 -6
  546. package/src/alphalib/types/robots/video-artwork.ts +100 -0
  547. package/src/alphalib/types/robots/video-concat.ts +30 -1
  548. package/src/alphalib/types/robots/video-encode.ts +0 -1
  549. package/src/alphalib/types/robots/video-generate.ts +120 -0
  550. package/src/alphalib/types/robots/video-merge.ts +33 -1
  551. package/src/alphalib/types/robots/video-ondemand.ts +3 -4
  552. package/src/alphalib/types/robots/video-split.ts +117 -0
  553. package/src/alphalib/types/robots/video-subtitle.ts +61 -8
  554. package/src/alphalib/types/robots/video-thumbs.ts +0 -1
  555. package/src/alphalib/types/robots/vimeo-import.ts +0 -1
  556. package/src/alphalib/types/robots/vimeo-store.ts +14 -3
  557. package/src/alphalib/types/robots/wasabi-import.ts +0 -1
  558. package/src/alphalib/types/robots/wasabi-store.ts +0 -1
  559. package/src/alphalib/types/robots/youtube-store.ts +4 -5
  560. package/src/alphalib/types/skillFrontmatter.ts +24 -0
  561. package/src/alphalib/types/template.ts +61 -15
  562. package/src/alphalib/types/templateCredential.ts +1 -0
  563. package/src/alphalib/zodParseWithContext.ts +19 -12
  564. package/src/cli/commands/assemblies.ts +825 -505
  565. package/src/cli/commands/index.ts +6 -3
  566. package/src/cli/commands/templates.ts +6 -17
  567. package/src/cli/fileProcessingOptions.ts +294 -0
  568. package/src/cli/generateIntentDocs.ts +438 -0
  569. package/src/cli/intentCommandSpecs.ts +277 -0
  570. package/src/cli/intentCommands.ts +525 -0
  571. package/src/cli/intentFields.ts +403 -0
  572. package/src/cli/intentInputPolicy.ts +11 -0
  573. package/src/cli/intentRuntime.ts +739 -0
  574. package/src/cli/resultFiles.ts +105 -0
  575. package/src/cli/resultUrls.ts +72 -0
  576. package/src/cli/semanticIntents/imageDescribe.ts +257 -0
  577. package/src/cli/semanticIntents/imageGenerate.ts +254 -0
  578. package/src/cli/semanticIntents/index.ts +53 -0
  579. package/src/cli/semanticIntents/markdownPdf.ts +120 -0
  580. package/src/cli/semanticIntents/parsing.ts +56 -0
  581. package/src/cli/stepsInput.ts +32 -0
  582. package/src/cli.ts +5 -4
  583. package/src/ensureUniqueCounter.ts +75 -0
  584. package/src/inputFiles.ts +277 -26
  585. package/src/robots.ts +3 -3
@@ -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,
@@ -0,0 +1,185 @@
1
+ import { z } from 'zod'
2
+
3
+ import type { RobotMetaInput } from './_instructions-primitives.ts'
4
+ import {
5
+ imageQualitySchema,
6
+ interpolateRobot,
7
+ robotBase,
8
+ robotImagemagick,
9
+ robotUse,
10
+ } from './_instructions-primitives.ts'
11
+
12
+ export const meta: RobotMetaInput = {
13
+ bytescount: 1,
14
+ discount_factor: 1,
15
+ discount_pct: 0,
16
+ example_code: {
17
+ steps: {
18
+ enhanced_classic: {
19
+ robot: '/image/enhance',
20
+ use: ':original',
21
+ enhance: 'auto',
22
+ preset: 'vivid',
23
+ },
24
+ enhanced_ai: {
25
+ robot: '/image/enhance',
26
+ use: ':original',
27
+ engine: 'ai',
28
+ ai_preset: 'restore',
29
+ },
30
+ },
31
+ },
32
+ example_code_description: 'Enhance uploaded images with classic auto mode or AI restoration:',
33
+ minimum_charge: 0,
34
+ output_factor: 0.6,
35
+ override_lvl1: 'Image Manipulation',
36
+ purpose_sentence:
37
+ 'automatically enhances images by adjusting levels, contrast, and sharpness, and optionally applies photo filter presets',
38
+ purpose_verb: 'enhance',
39
+ purpose_word: 'enhance',
40
+ purpose_words: 'Enhance images',
41
+ service_slug: 'image-manipulation',
42
+ slot_count: 15,
43
+ title: 'Enhance images',
44
+ typical_file_size_mb: 1.2,
45
+ typical_file_type: 'image',
46
+ name: 'ImageEnhanceRobot',
47
+ priceFactor: 1,
48
+ queueSlotCount: 15,
49
+ isAllowedForUrlTransform: true,
50
+ trackOutputFileSize: true,
51
+ isInternal: false,
52
+ removeJobResultFilesFromDiskRightAfterStoringOnS3: false,
53
+ stage: 'beta',
54
+ }
55
+
56
+ const enhanceModeSchema = z.enum(['auto', 'auto_gentle', 'auto_aggressive', 'none']).default('auto')
57
+
58
+ const presetSchema = z
59
+ .enum([
60
+ 'none',
61
+ 'warm',
62
+ 'cool',
63
+ 'vintage',
64
+ 'vivid',
65
+ 'matte',
66
+ 'cinematic',
67
+ 'golden_hour',
68
+ 'bw_dramatic',
69
+ 'bw_classic',
70
+ 'noir',
71
+ 'fade',
72
+ 'pastel',
73
+ 'teal_orange',
74
+ ])
75
+ .default('none')
76
+
77
+ const engineSchema = z.enum(['classic', 'ai']).default('classic')
78
+
79
+ const aiPresetSchema = z.enum(['restore', 'face_restore']).default('restore')
80
+
81
+ export const robotImageEnhanceInstructionsSchema = robotBase
82
+ .merge(robotUse)
83
+ .merge(robotImagemagick)
84
+ .extend({
85
+ robot: z.literal('/image/enhance').describe(`
86
+ With this <dfn>Robot</dfn> you can automatically enhance images with one click — adjusting levels, contrast, saturation, sharpness, and white balance to produce an optimally balanced image. It also supports a library of named photo filter presets (e.g. \`warm\`, \`cool\`, \`vintage\`, \`vivid\`) that apply curated color grading and tone adjustments.
87
+
88
+ It works well together with [🤖/image/resize](/docs/robots/image-resize/) — you can enhance first, then resize, or vice versa.
89
+
90
+ > [!Note]
91
+ > This <dfn>Robot</dfn> accepts all image types supported by ImageMagick and will pass through unsupported types unchanged.
92
+
93
+ > [!Note]
94
+ > \`engine: "classic"\` uses \`enhance\`, \`preset\`, \`sharpen\`, and \`denoise\`. \`engine: "ai"\` uses \`ai_preset\` and \`quality\`; classic controls are ignored in AI mode.
95
+
96
+ > [!Note]
97
+ > Output keeps the original file extension when possible. In AI mode, if the target extension is not writable by the selected \`imagemagick_stack\`, the file is passed through unchanged.
98
+ `),
99
+ enhance: enhanceModeSchema.describe(`
100
+ The auto-enhancement mode. \`"auto"\` applies balanced auto-levels, gamma correction, and subtle sharpening. \`"auto_gentle"\` is more conservative (good for already-decent photos). \`"auto_aggressive"\` applies stronger normalization and contrast. \`"none"\` skips auto-enhance (useful when only applying a preset filter).
101
+ `),
102
+ preset: presetSchema.describe(`
103
+ A named color grading preset to apply. Applied after auto-enhancement. Use \`"none"\` to skip preset application.
104
+
105
+ Available presets:
106
+ - \`warm\` — Warm golden tones
107
+ - \`cool\` — Cool blue-shifted tones
108
+ - \`vintage\` — Faded retro look with warm shadows
109
+ - \`vivid\` — Boosted saturation and contrast
110
+ - \`matte\` — Lifted blacks for a matte film look
111
+ - \`cinematic\` — Teal-and-orange cinema grading
112
+ - \`golden_hour\` — Warm sunset-like glow
113
+ - \`bw_dramatic\` — High-contrast black and white
114
+ - \`bw_classic\` — Classic film black and white
115
+ - \`noir\` — Dark, moody black and white
116
+ - \`fade\` — Washed-out faded look
117
+ - \`pastel\` — Soft, desaturated pastel tones
118
+ - \`teal_orange\` — Complementary teal shadows and orange highlights
119
+ `),
120
+ engine: engineSchema.describe(`
121
+ Enhancement engine to use.
122
+
123
+ - \`"classic"\` uses ImageMagick-based adjustments and presets.
124
+ - \`"ai"\` uses AI restoration models on Replicate (typically higher latency and cost than classic mode).
125
+ `),
126
+ ai_preset: aiPresetSchema.describe(`
127
+ AI enhancement preset used when \`engine\` is set to \`"ai"\`:
128
+ - \`restore\` — General image restoration.
129
+ - \`face_restore\` — Portrait-focused face restoration.
130
+
131
+ AI mode is not intended for image upscaling. For dedicated upscaling, use [🤖/image/upscale](/docs/robots/image-upscale/).
132
+ `),
133
+ sharpen: z
134
+ .number()
135
+ .min(0)
136
+ .max(10)
137
+ .default(0)
138
+ .describe(`
139
+ Additional sharpening amount (\`0\` = none, \`10\` = maximum). The \`"auto"\` enhance mode already applies subtle sharpening; this parameter adds more on top.
140
+ `),
141
+ denoise: z
142
+ .number()
143
+ .min(0)
144
+ .max(10)
145
+ .default(0)
146
+ .describe(`
147
+ Noise reduction strength (\`0\` = none, \`10\` = maximum). Useful for high-ISO photos.
148
+ `),
149
+ quality: imageQualitySchema.describe(`
150
+ Quality of the output image. A value between \`1\` and \`100\`. Defaults to \`92\`.
151
+ `),
152
+ })
153
+ .strict()
154
+
155
+ export const robotImageEnhanceInstructionsWithHiddenFieldsSchema =
156
+ robotImageEnhanceInstructionsSchema.extend({
157
+ result: z
158
+ .union([z.literal('debug'), robotImageEnhanceInstructionsSchema.shape.result])
159
+ .optional(),
160
+ })
161
+
162
+ export type RobotImageEnhanceInstructions = z.infer<typeof robotImageEnhanceInstructionsSchema>
163
+ export type RobotImageEnhanceInstructionsWithHiddenFields = z.infer<
164
+ typeof robotImageEnhanceInstructionsWithHiddenFieldsSchema
165
+ >
166
+
167
+ export const interpolatableRobotImageEnhanceInstructionsSchema = interpolateRobot(
168
+ robotImageEnhanceInstructionsSchema,
169
+ )
170
+ export type InterpolatableRobotImageEnhanceInstructions =
171
+ InterpolatableRobotImageEnhanceInstructionsInput
172
+
173
+ export type InterpolatableRobotImageEnhanceInstructionsInput = z.input<
174
+ typeof interpolatableRobotImageEnhanceInstructionsSchema
175
+ >
176
+
177
+ export const interpolatableRobotImageEnhanceInstructionsWithHiddenFieldsSchema = interpolateRobot(
178
+ robotImageEnhanceInstructionsWithHiddenFieldsSchema,
179
+ )
180
+ export type InterpolatableRobotImageEnhanceInstructionsWithHiddenFields = z.infer<
181
+ typeof interpolatableRobotImageEnhanceInstructionsWithHiddenFieldsSchema
182
+ >
183
+ export type InterpolatableRobotImageEnhanceInstructionsWithHiddenFieldsInput = z.input<
184
+ typeof interpolatableRobotImageEnhanceInstructionsWithHiddenFieldsSchema
185
+ >
@@ -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: 1,
14
13
  discount_factor: 1,
15
14
  discount_pct: 0,