transloadit 4.7.6 → 4.8.1

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 (518) hide show
  1. package/README.md +97 -22
  2. package/dist/alphalib/assembly-linter.js +1 -1
  3. package/dist/alphalib/assembly-linter.js.map +1 -1
  4. package/dist/alphalib/stepParsing.js +2 -2
  5. package/dist/alphalib/stepParsing.js.map +1 -1
  6. package/dist/alphalib/types/assemblyReplay.d.ts +2 -7860
  7. package/dist/alphalib/types/assemblyReplay.d.ts.map +1 -1
  8. package/dist/alphalib/types/assemblyReplayNotification.d.ts +2 -7860
  9. package/dist/alphalib/types/assemblyReplayNotification.d.ts.map +1 -1
  10. package/dist/alphalib/types/assemblyStatus.d.ts +4807 -298
  11. package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
  12. package/dist/alphalib/types/assemblyStatus.js +36 -1
  13. package/dist/alphalib/types/assemblyStatus.js.map +1 -1
  14. package/dist/alphalib/types/robots/_index.d.ts +903 -72620
  15. package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
  16. package/dist/alphalib/types/robots/_index.js +62 -11
  17. package/dist/alphalib/types/robots/_index.js.map +1 -1
  18. package/dist/alphalib/types/robots/_instructions-primitives.d.ts +41 -10
  19. package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
  20. package/dist/alphalib/types/robots/_instructions-primitives.js +89 -3
  21. package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
  22. package/dist/alphalib/types/robots/ai-chat.d.ts +33 -0
  23. package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
  24. package/dist/alphalib/types/robots/ai-chat.js +28 -5
  25. package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
  26. package/dist/alphalib/types/robots/assembly-savejson.d.ts.map +1 -1
  27. package/dist/alphalib/types/robots/assembly-savejson.js +8 -0
  28. package/dist/alphalib/types/robots/assembly-savejson.js.map +1 -1
  29. package/dist/alphalib/types/robots/audio-artwork.d.ts.map +1 -1
  30. package/dist/alphalib/types/robots/audio-artwork.js +4 -5
  31. package/dist/alphalib/types/robots/audio-artwork.js.map +1 -1
  32. package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
  33. package/dist/alphalib/types/robots/audio-concat.js +1 -2
  34. package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
  35. package/dist/alphalib/types/robots/audio-encode.d.ts.map +1 -1
  36. package/dist/alphalib/types/robots/audio-encode.js +1 -2
  37. package/dist/alphalib/types/robots/audio-encode.js.map +1 -1
  38. package/dist/alphalib/types/robots/audio-loop.d.ts.map +1 -1
  39. package/dist/alphalib/types/robots/audio-loop.js +1 -2
  40. package/dist/alphalib/types/robots/audio-loop.js.map +1 -1
  41. package/dist/alphalib/types/robots/audio-merge.d.ts.map +1 -1
  42. package/dist/alphalib/types/robots/audio-merge.js +1 -2
  43. package/dist/alphalib/types/robots/audio-merge.js.map +1 -1
  44. package/dist/alphalib/types/robots/audio-split.d.ts +2936 -0
  45. package/dist/alphalib/types/robots/audio-split.d.ts.map +1 -0
  46. package/dist/alphalib/types/robots/audio-split.js +88 -0
  47. package/dist/alphalib/types/robots/audio-split.js.map +1 -0
  48. package/dist/alphalib/types/robots/audio-waveform.d.ts +92 -6
  49. package/dist/alphalib/types/robots/audio-waveform.d.ts.map +1 -1
  50. package/dist/alphalib/types/robots/audio-waveform.js +72 -6
  51. package/dist/alphalib/types/robots/audio-waveform.js.map +1 -1
  52. package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
  53. package/dist/alphalib/types/robots/azure-import.js +0 -1
  54. package/dist/alphalib/types/robots/azure-import.js.map +1 -1
  55. package/dist/alphalib/types/robots/azure-store.d.ts.map +1 -1
  56. package/dist/alphalib/types/robots/azure-store.js +0 -1
  57. package/dist/alphalib/types/robots/azure-store.js.map +1 -1
  58. package/dist/alphalib/types/robots/backblaze-import.d.ts.map +1 -1
  59. package/dist/alphalib/types/robots/backblaze-import.js +0 -1
  60. package/dist/alphalib/types/robots/backblaze-import.js.map +1 -1
  61. package/dist/alphalib/types/robots/backblaze-store.d.ts.map +1 -1
  62. package/dist/alphalib/types/robots/backblaze-store.js +0 -1
  63. package/dist/alphalib/types/robots/backblaze-store.js.map +1 -1
  64. package/dist/alphalib/types/robots/box-import.d.ts +150 -0
  65. package/dist/alphalib/types/robots/box-import.d.ts.map +1 -0
  66. package/dist/alphalib/types/robots/box-import.js +63 -0
  67. package/dist/alphalib/types/robots/box-import.js.map +1 -0
  68. package/dist/alphalib/types/robots/box-store.d.ts +455 -0
  69. package/dist/alphalib/types/robots/box-store.d.ts.map +1 -0
  70. package/dist/alphalib/types/robots/box-store.js +66 -0
  71. package/dist/alphalib/types/robots/box-store.js.map +1 -0
  72. package/dist/alphalib/types/robots/cloudfiles-import.d.ts.map +1 -1
  73. package/dist/alphalib/types/robots/cloudfiles-import.js +0 -1
  74. package/dist/alphalib/types/robots/cloudfiles-import.js.map +1 -1
  75. package/dist/alphalib/types/robots/cloudfiles-store.d.ts.map +1 -1
  76. package/dist/alphalib/types/robots/cloudfiles-store.js +0 -1
  77. package/dist/alphalib/types/robots/cloudfiles-store.js.map +1 -1
  78. package/dist/alphalib/types/robots/cloudflare-import.d.ts.map +1 -1
  79. package/dist/alphalib/types/robots/cloudflare-import.js +0 -1
  80. package/dist/alphalib/types/robots/cloudflare-import.js.map +1 -1
  81. package/dist/alphalib/types/robots/cloudflare-store.d.ts.map +1 -1
  82. package/dist/alphalib/types/robots/cloudflare-store.js +0 -1
  83. package/dist/alphalib/types/robots/cloudflare-store.js.map +1 -1
  84. package/dist/alphalib/types/robots/digitalocean-import.d.ts.map +1 -1
  85. package/dist/alphalib/types/robots/digitalocean-import.js +0 -1
  86. package/dist/alphalib/types/robots/digitalocean-import.js.map +1 -1
  87. package/dist/alphalib/types/robots/digitalocean-store.d.ts.map +1 -1
  88. package/dist/alphalib/types/robots/digitalocean-store.js +0 -1
  89. package/dist/alphalib/types/robots/digitalocean-store.js.map +1 -1
  90. package/dist/alphalib/types/robots/document-autorotate.d.ts.map +1 -1
  91. package/dist/alphalib/types/robots/document-autorotate.js +8 -1
  92. package/dist/alphalib/types/robots/document-autorotate.js.map +1 -1
  93. package/dist/alphalib/types/robots/document-convert.d.ts +8 -8
  94. package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
  95. package/dist/alphalib/types/robots/document-convert.js +9 -3
  96. package/dist/alphalib/types/robots/document-convert.js.map +1 -1
  97. package/dist/alphalib/types/robots/document-merge.d.ts.map +1 -1
  98. package/dist/alphalib/types/robots/document-merge.js +0 -1
  99. package/dist/alphalib/types/robots/document-merge.js.map +1 -1
  100. package/dist/alphalib/types/robots/document-ocr.d.ts.map +1 -1
  101. package/dist/alphalib/types/robots/document-ocr.js +0 -1
  102. package/dist/alphalib/types/robots/document-ocr.js.map +1 -1
  103. package/dist/alphalib/types/robots/document-optimize.d.ts.map +1 -1
  104. package/dist/alphalib/types/robots/document-optimize.js +0 -1
  105. package/dist/alphalib/types/robots/document-optimize.js.map +1 -1
  106. package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
  107. package/dist/alphalib/types/robots/document-split.js +9 -1
  108. package/dist/alphalib/types/robots/document-split.js.map +1 -1
  109. package/dist/alphalib/types/robots/document-thumbs.d.ts +12 -0
  110. package/dist/alphalib/types/robots/document-thumbs.d.ts.map +1 -1
  111. package/dist/alphalib/types/robots/document-thumbs.js +23 -4
  112. package/dist/alphalib/types/robots/document-thumbs.js.map +1 -1
  113. package/dist/alphalib/types/robots/dropbox-import.d.ts.map +1 -1
  114. package/dist/alphalib/types/robots/dropbox-import.js +0 -1
  115. package/dist/alphalib/types/robots/dropbox-import.js.map +1 -1
  116. package/dist/alphalib/types/robots/dropbox-store.d.ts.map +1 -1
  117. package/dist/alphalib/types/robots/dropbox-store.js +0 -1
  118. package/dist/alphalib/types/robots/dropbox-store.js.map +1 -1
  119. package/dist/alphalib/types/robots/edgly-deliver.d.ts.map +1 -1
  120. package/dist/alphalib/types/robots/edgly-deliver.js +8 -1
  121. package/dist/alphalib/types/robots/edgly-deliver.js.map +1 -1
  122. package/dist/alphalib/types/robots/file-compress.d.ts +12 -0
  123. package/dist/alphalib/types/robots/file-compress.d.ts.map +1 -1
  124. package/dist/alphalib/types/robots/file-compress.js +8 -1
  125. package/dist/alphalib/types/robots/file-compress.js.map +1 -1
  126. package/dist/alphalib/types/robots/file-decompress.d.ts +24 -0
  127. package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
  128. package/dist/alphalib/types/robots/file-decompress.js +30 -5
  129. package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
  130. package/dist/alphalib/types/robots/file-filter.d.ts.map +1 -1
  131. package/dist/alphalib/types/robots/file-filter.js +23 -6
  132. package/dist/alphalib/types/robots/file-filter.js.map +1 -1
  133. package/dist/alphalib/types/robots/file-hash.d.ts +24 -0
  134. package/dist/alphalib/types/robots/file-hash.d.ts.map +1 -1
  135. package/dist/alphalib/types/robots/file-hash.js +23 -1
  136. package/dist/alphalib/types/robots/file-hash.js.map +1 -1
  137. package/dist/alphalib/types/robots/file-preview.d.ts +12 -0
  138. package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
  139. package/dist/alphalib/types/robots/file-preview.js +8 -1
  140. package/dist/alphalib/types/robots/file-preview.js.map +1 -1
  141. package/dist/alphalib/types/robots/file-read.d.ts.map +1 -1
  142. package/dist/alphalib/types/robots/file-read.js +9 -1
  143. package/dist/alphalib/types/robots/file-read.js.map +1 -1
  144. package/dist/alphalib/types/robots/file-serve.d.ts +12 -0
  145. package/dist/alphalib/types/robots/file-serve.d.ts.map +1 -1
  146. package/dist/alphalib/types/robots/file-serve.js +38 -7
  147. package/dist/alphalib/types/robots/file-serve.js.map +1 -1
  148. package/dist/alphalib/types/robots/file-verify.d.ts.map +1 -1
  149. package/dist/alphalib/types/robots/file-verify.js +0 -1
  150. package/dist/alphalib/types/robots/file-verify.js.map +1 -1
  151. package/dist/alphalib/types/robots/file-virusscan.d.ts.map +1 -1
  152. package/dist/alphalib/types/robots/file-virusscan.js +5 -4
  153. package/dist/alphalib/types/robots/file-virusscan.js.map +1 -1
  154. package/dist/alphalib/types/robots/file-watermark.d.ts.map +1 -1
  155. package/dist/alphalib/types/robots/file-watermark.js +10 -0
  156. package/dist/alphalib/types/robots/file-watermark.js.map +1 -1
  157. package/dist/alphalib/types/robots/ftp-import.d.ts.map +1 -1
  158. package/dist/alphalib/types/robots/ftp-import.js +0 -1
  159. package/dist/alphalib/types/robots/ftp-import.js.map +1 -1
  160. package/dist/alphalib/types/robots/ftp-store.d.ts.map +1 -1
  161. package/dist/alphalib/types/robots/ftp-store.js +0 -1
  162. package/dist/alphalib/types/robots/ftp-store.js.map +1 -1
  163. package/dist/alphalib/types/robots/google-import.d.ts.map +1 -1
  164. package/dist/alphalib/types/robots/google-import.js +0 -1
  165. package/dist/alphalib/types/robots/google-import.js.map +1 -1
  166. package/dist/alphalib/types/robots/google-store.d.ts.map +1 -1
  167. package/dist/alphalib/types/robots/google-store.js +0 -1
  168. package/dist/alphalib/types/robots/google-store.js.map +1 -1
  169. package/dist/alphalib/types/robots/html-convert.d.ts.map +1 -1
  170. package/dist/alphalib/types/robots/html-convert.js +0 -1
  171. package/dist/alphalib/types/robots/html-convert.js.map +1 -1
  172. package/dist/alphalib/types/robots/http-import.d.ts.map +1 -1
  173. package/dist/alphalib/types/robots/http-import.js +0 -1
  174. package/dist/alphalib/types/robots/http-import.js.map +1 -1
  175. package/dist/alphalib/types/robots/image-bgremove.d.ts +8 -8
  176. package/dist/alphalib/types/robots/image-bgremove.d.ts.map +1 -1
  177. package/dist/alphalib/types/robots/image-bgremove.js +4 -2
  178. package/dist/alphalib/types/robots/image-bgremove.js.map +1 -1
  179. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts +465 -0
  180. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts.map +1 -0
  181. package/dist/alphalib/types/robots/image-copyrightdetect.js +136 -0
  182. package/dist/alphalib/types/robots/image-copyrightdetect.js.map +1 -0
  183. package/dist/alphalib/types/robots/image-describe.d.ts.map +1 -1
  184. package/dist/alphalib/types/robots/image-describe.js +0 -1
  185. package/dist/alphalib/types/robots/image-describe.js.map +1 -1
  186. package/dist/alphalib/types/robots/image-enhance.d.ts +502 -0
  187. package/dist/alphalib/types/robots/image-enhance.d.ts.map +1 -0
  188. package/dist/alphalib/types/robots/image-enhance.js +146 -0
  189. package/dist/alphalib/types/robots/image-enhance.js.map +1 -0
  190. package/dist/alphalib/types/robots/image-facedetect.d.ts.map +1 -1
  191. package/dist/alphalib/types/robots/image-facedetect.js +0 -1
  192. package/dist/alphalib/types/robots/image-facedetect.js.map +1 -1
  193. package/dist/alphalib/types/robots/image-generate.d.ts +4 -5
  194. package/dist/alphalib/types/robots/image-generate.d.ts.map +1 -1
  195. package/dist/alphalib/types/robots/image-generate.js +62 -8
  196. package/dist/alphalib/types/robots/image-generate.js.map +1 -1
  197. package/dist/alphalib/types/robots/image-merge.d.ts +12 -12
  198. package/dist/alphalib/types/robots/image-merge.d.ts.map +1 -1
  199. package/dist/alphalib/types/robots/image-merge.js +0 -1
  200. package/dist/alphalib/types/robots/image-merge.js.map +1 -1
  201. package/dist/alphalib/types/robots/image-ocr.d.ts.map +1 -1
  202. package/dist/alphalib/types/robots/image-ocr.js +0 -1
  203. package/dist/alphalib/types/robots/image-ocr.js.map +1 -1
  204. package/dist/alphalib/types/robots/image-optimize.d.ts +12 -0
  205. package/dist/alphalib/types/robots/image-optimize.d.ts.map +1 -1
  206. package/dist/alphalib/types/robots/image-optimize.js +16 -3
  207. package/dist/alphalib/types/robots/image-optimize.js.map +1 -1
  208. package/dist/alphalib/types/robots/image-resize.d.ts +20 -8
  209. package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
  210. package/dist/alphalib/types/robots/image-resize.js +37 -1
  211. package/dist/alphalib/types/robots/image-resize.js.map +1 -1
  212. package/dist/alphalib/types/robots/image-upscale.d.ts +447 -0
  213. package/dist/alphalib/types/robots/image-upscale.d.ts.map +1 -0
  214. package/dist/alphalib/types/robots/image-upscale.js +65 -0
  215. package/dist/alphalib/types/robots/image-upscale.js.map +1 -0
  216. package/dist/alphalib/types/robots/mega-import.d.ts +244 -0
  217. package/dist/alphalib/types/robots/mega-import.d.ts.map +1 -0
  218. package/dist/alphalib/types/robots/mega-import.js +84 -0
  219. package/dist/alphalib/types/robots/mega-import.js.map +1 -0
  220. package/dist/alphalib/types/robots/mega-store.d.ts +526 -0
  221. package/dist/alphalib/types/robots/mega-store.d.ts.map +1 -0
  222. package/dist/alphalib/types/robots/mega-store.js +82 -0
  223. package/dist/alphalib/types/robots/mega-store.js.map +1 -0
  224. package/dist/alphalib/types/robots/meta-read.d.ts.map +1 -1
  225. package/dist/alphalib/types/robots/meta-read.js +8 -0
  226. package/dist/alphalib/types/robots/meta-read.js.map +1 -1
  227. package/dist/alphalib/types/robots/meta-write.d.ts.map +1 -1
  228. package/dist/alphalib/types/robots/meta-write.js +0 -1
  229. package/dist/alphalib/types/robots/meta-write.js.map +1 -1
  230. package/dist/alphalib/types/robots/minio-import.d.ts.map +1 -1
  231. package/dist/alphalib/types/robots/minio-import.js +0 -1
  232. package/dist/alphalib/types/robots/minio-import.js.map +1 -1
  233. package/dist/alphalib/types/robots/minio-store.d.ts.map +1 -1
  234. package/dist/alphalib/types/robots/minio-store.js +0 -1
  235. package/dist/alphalib/types/robots/minio-store.js.map +1 -1
  236. package/dist/alphalib/types/robots/progress-simulate.d.ts.map +1 -1
  237. package/dist/alphalib/types/robots/progress-simulate.js +13 -0
  238. package/dist/alphalib/types/robots/progress-simulate.js.map +1 -1
  239. package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
  240. package/dist/alphalib/types/robots/s3-import.js +0 -1
  241. package/dist/alphalib/types/robots/s3-import.js.map +1 -1
  242. package/dist/alphalib/types/robots/s3-store.d.ts.map +1 -1
  243. package/dist/alphalib/types/robots/s3-store.js +0 -1
  244. package/dist/alphalib/types/robots/s3-store.js.map +1 -1
  245. package/dist/alphalib/types/robots/script-run.d.ts.map +1 -1
  246. package/dist/alphalib/types/robots/script-run.js +10 -1
  247. package/dist/alphalib/types/robots/script-run.js.map +1 -1
  248. package/dist/alphalib/types/robots/sftp-import.d.ts.map +1 -1
  249. package/dist/alphalib/types/robots/sftp-import.js +0 -1
  250. package/dist/alphalib/types/robots/sftp-import.js.map +1 -1
  251. package/dist/alphalib/types/robots/sftp-store.d.ts.map +1 -1
  252. package/dist/alphalib/types/robots/sftp-store.js +0 -1
  253. package/dist/alphalib/types/robots/sftp-store.js.map +1 -1
  254. package/dist/alphalib/types/robots/speech-transcribe.d.ts.map +1 -1
  255. package/dist/alphalib/types/robots/speech-transcribe.js +0 -1
  256. package/dist/alphalib/types/robots/speech-transcribe.js.map +1 -1
  257. package/dist/alphalib/types/robots/supabase-import.d.ts.map +1 -1
  258. package/dist/alphalib/types/robots/supabase-import.js +0 -1
  259. package/dist/alphalib/types/robots/supabase-import.js.map +1 -1
  260. package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
  261. package/dist/alphalib/types/robots/supabase-store.js +0 -1
  262. package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
  263. package/dist/alphalib/types/robots/swift-import.d.ts.map +1 -1
  264. package/dist/alphalib/types/robots/swift-import.js +0 -1
  265. package/dist/alphalib/types/robots/swift-import.js.map +1 -1
  266. package/dist/alphalib/types/robots/swift-store.d.ts.map +1 -1
  267. package/dist/alphalib/types/robots/swift-store.js +0 -1
  268. package/dist/alphalib/types/robots/swift-store.js.map +1 -1
  269. package/dist/alphalib/types/robots/text-speak.d.ts.map +1 -1
  270. package/dist/alphalib/types/robots/text-speak.js +0 -1
  271. package/dist/alphalib/types/robots/text-speak.js.map +1 -1
  272. package/dist/alphalib/types/robots/text-translate.d.ts.map +1 -1
  273. package/dist/alphalib/types/robots/text-translate.js +0 -1
  274. package/dist/alphalib/types/robots/text-translate.js.map +1 -1
  275. package/dist/alphalib/types/robots/tigris-import.d.ts.map +1 -1
  276. package/dist/alphalib/types/robots/tigris-import.js +0 -1
  277. package/dist/alphalib/types/robots/tigris-import.js.map +1 -1
  278. package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
  279. package/dist/alphalib/types/robots/tigris-store.js +0 -1
  280. package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
  281. package/dist/alphalib/types/robots/tlcdn-deliver.d.ts.map +1 -1
  282. package/dist/alphalib/types/robots/tlcdn-deliver.js +8 -1
  283. package/dist/alphalib/types/robots/tlcdn-deliver.js.map +1 -1
  284. package/dist/alphalib/types/robots/tus-store.d.ts.map +1 -1
  285. package/dist/alphalib/types/robots/tus-store.js +1 -14
  286. package/dist/alphalib/types/robots/tus-store.js.map +1 -1
  287. package/dist/alphalib/types/robots/upload-handle.d.ts.map +1 -1
  288. package/dist/alphalib/types/robots/upload-handle.js +0 -1
  289. package/dist/alphalib/types/robots/upload-handle.js.map +1 -1
  290. package/dist/alphalib/types/robots/video-adaptive.d.ts +32 -8
  291. package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
  292. package/dist/alphalib/types/robots/video-adaptive.js +22 -6
  293. package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
  294. package/dist/alphalib/types/robots/video-artwork.d.ts +2855 -0
  295. package/dist/alphalib/types/robots/video-artwork.d.ts.map +1 -0
  296. package/dist/alphalib/types/robots/video-artwork.js +66 -0
  297. package/dist/alphalib/types/robots/video-artwork.js.map +1 -0
  298. package/dist/alphalib/types/robots/video-concat.d.ts +36 -0
  299. package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
  300. package/dist/alphalib/types/robots/video-concat.js +30 -1
  301. package/dist/alphalib/types/robots/video-concat.js.map +1 -1
  302. package/dist/alphalib/types/robots/video-encode.d.ts.map +1 -1
  303. package/dist/alphalib/types/robots/video-encode.js +0 -1
  304. package/dist/alphalib/types/robots/video-encode.js.map +1 -1
  305. package/dist/alphalib/types/robots/video-generate.d.ts +594 -0
  306. package/dist/alphalib/types/robots/video-generate.d.ts.map +1 -0
  307. package/dist/alphalib/types/robots/video-generate.js +90 -0
  308. package/dist/alphalib/types/robots/video-generate.js.map +1 -0
  309. package/dist/alphalib/types/robots/video-merge.d.ts +24 -0
  310. package/dist/alphalib/types/robots/video-merge.d.ts.map +1 -1
  311. package/dist/alphalib/types/robots/video-merge.js +33 -1
  312. package/dist/alphalib/types/robots/video-merge.js.map +1 -1
  313. package/dist/alphalib/types/robots/video-ondemand.d.ts.map +1 -1
  314. package/dist/alphalib/types/robots/video-ondemand.js +3 -4
  315. package/dist/alphalib/types/robots/video-ondemand.js.map +1 -1
  316. package/dist/alphalib/types/robots/video-split.d.ts +2939 -0
  317. package/dist/alphalib/types/robots/video-split.d.ts.map +1 -0
  318. package/dist/alphalib/types/robots/video-split.js +78 -0
  319. package/dist/alphalib/types/robots/video-split.js.map +1 -0
  320. package/dist/alphalib/types/robots/video-subtitle.d.ts +52 -4
  321. package/dist/alphalib/types/robots/video-subtitle.d.ts.map +1 -1
  322. package/dist/alphalib/types/robots/video-subtitle.js +61 -8
  323. package/dist/alphalib/types/robots/video-subtitle.js.map +1 -1
  324. package/dist/alphalib/types/robots/video-thumbs.d.ts.map +1 -1
  325. package/dist/alphalib/types/robots/video-thumbs.js +0 -1
  326. package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
  327. package/dist/alphalib/types/robots/vimeo-import.d.ts +4 -4
  328. package/dist/alphalib/types/robots/vimeo-import.d.ts.map +1 -1
  329. package/dist/alphalib/types/robots/vimeo-import.js +0 -1
  330. package/dist/alphalib/types/robots/vimeo-import.js.map +1 -1
  331. package/dist/alphalib/types/robots/vimeo-store.d.ts +2 -2
  332. package/dist/alphalib/types/robots/vimeo-store.d.ts.map +1 -1
  333. package/dist/alphalib/types/robots/vimeo-store.js +14 -3
  334. package/dist/alphalib/types/robots/vimeo-store.js.map +1 -1
  335. package/dist/alphalib/types/robots/wasabi-import.d.ts.map +1 -1
  336. package/dist/alphalib/types/robots/wasabi-import.js +0 -1
  337. package/dist/alphalib/types/robots/wasabi-import.js.map +1 -1
  338. package/dist/alphalib/types/robots/wasabi-store.d.ts.map +1 -1
  339. package/dist/alphalib/types/robots/wasabi-store.js +0 -1
  340. package/dist/alphalib/types/robots/wasabi-store.js.map +1 -1
  341. package/dist/alphalib/types/robots/youtube-store.d.ts.map +1 -1
  342. package/dist/alphalib/types/robots/youtube-store.js +4 -5
  343. package/dist/alphalib/types/robots/youtube-store.js.map +1 -1
  344. package/dist/alphalib/types/template.d.ts +41 -132175
  345. package/dist/alphalib/types/template.d.ts.map +1 -1
  346. package/dist/alphalib/types/template.js +16 -3
  347. package/dist/alphalib/types/template.js.map +1 -1
  348. package/dist/alphalib/types/templateCredential.d.ts +3 -3
  349. package/dist/alphalib/types/templateCredential.d.ts.map +1 -1
  350. package/dist/alphalib/types/templateCredential.js +1 -0
  351. package/dist/alphalib/types/templateCredential.js.map +1 -1
  352. package/dist/alphalib/zodParseWithContext.d.ts.map +1 -1
  353. package/dist/alphalib/zodParseWithContext.js +15 -11
  354. package/dist/alphalib/zodParseWithContext.js.map +1 -1
  355. package/dist/bearerToken.d.ts +1 -0
  356. package/dist/bearerToken.d.ts.map +1 -1
  357. package/dist/bearerToken.js +5 -3
  358. package/dist/bearerToken.js.map +1 -1
  359. package/dist/cli/commands/BaseCommand.d.ts +0 -1
  360. package/dist/cli/commands/BaseCommand.d.ts.map +1 -1
  361. package/dist/cli/commands/BaseCommand.js +7 -9
  362. package/dist/cli/commands/BaseCommand.js.map +1 -1
  363. package/dist/cli/commands/auth.d.ts.map +1 -1
  364. package/dist/cli/commands/auth.js +49 -29
  365. package/dist/cli/commands/auth.js.map +1 -1
  366. package/dist/cli/generateIntentDocs.d.ts +5 -1
  367. package/dist/cli/generateIntentDocs.d.ts.map +1 -1
  368. package/dist/cli/generateIntentDocs.js +27 -9
  369. package/dist/cli/generateIntentDocs.js.map +1 -1
  370. package/dist/cli/helpers.d.ts +19 -4
  371. package/dist/cli/helpers.d.ts.map +1 -1
  372. package/dist/cli/helpers.js +232 -10
  373. package/dist/cli/helpers.js.map +1 -1
  374. package/dist/cli/intentCommandSpecs.d.ts.map +1 -1
  375. package/dist/cli/intentCommandSpecs.js +4 -6
  376. package/dist/cli/intentCommandSpecs.js.map +1 -1
  377. package/dist/cli/intentRuntime.d.ts.map +1 -1
  378. package/dist/cli/intentRuntime.js +4 -4
  379. package/dist/cli/intentRuntime.js.map +1 -1
  380. package/dist/cli/semanticIntents/imageDescribe.d.ts +3 -1
  381. package/dist/cli/semanticIntents/imageDescribe.d.ts.map +1 -1
  382. package/dist/cli/semanticIntents/imageDescribe.js +1 -1
  383. package/dist/cli/semanticIntents/imageDescribe.js.map +1 -1
  384. package/dist/cli/semanticIntents/imageGenerate.d.ts +94 -0
  385. package/dist/cli/semanticIntents/imageGenerate.d.ts.map +1 -0
  386. package/dist/cli/semanticIntents/imageGenerate.js +215 -0
  387. package/dist/cli/semanticIntents/imageGenerate.js.map +1 -0
  388. package/dist/cli/semanticIntents/index.d.ts +3 -1
  389. package/dist/cli/semanticIntents/index.d.ts.map +1 -1
  390. package/dist/cli/semanticIntents/index.js +2 -0
  391. package/dist/cli/semanticIntents/index.js.map +1 -1
  392. package/dist/cli/semanticIntents/markdownPdf.js +1 -1
  393. package/dist/cli/semanticIntents/markdownPdf.js.map +1 -1
  394. package/dist/cli.d.ts +0 -1
  395. package/dist/cli.d.ts.map +1 -1
  396. package/dist/cli.js +3 -2
  397. package/dist/cli.js.map +1 -1
  398. package/dist/robots.js +2 -2
  399. package/dist/robots.js.map +1 -1
  400. package/package.json +1 -1
  401. package/src/alphalib/assembly-linter.ts +1 -1
  402. package/src/alphalib/stepParsing.ts +2 -2
  403. package/src/alphalib/types/assemblyStatus.ts +41 -2
  404. package/src/alphalib/types/robots/_index.ts +211 -20
  405. package/src/alphalib/types/robots/_instructions-primitives.ts +93 -3
  406. package/src/alphalib/types/robots/ai-chat.ts +35 -5
  407. package/src/alphalib/types/robots/assembly-savejson.ts +8 -0
  408. package/src/alphalib/types/robots/audio-artwork.ts +4 -5
  409. package/src/alphalib/types/robots/audio-concat.ts +1 -2
  410. package/src/alphalib/types/robots/audio-encode.ts +1 -2
  411. package/src/alphalib/types/robots/audio-loop.ts +1 -2
  412. package/src/alphalib/types/robots/audio-merge.ts +1 -2
  413. package/src/alphalib/types/robots/audio-split.ts +130 -0
  414. package/src/alphalib/types/robots/audio-waveform.ts +90 -6
  415. package/src/alphalib/types/robots/azure-import.ts +0 -1
  416. package/src/alphalib/types/robots/azure-store.ts +0 -1
  417. package/src/alphalib/types/robots/backblaze-import.ts +0 -1
  418. package/src/alphalib/types/robots/backblaze-store.ts +0 -1
  419. package/src/alphalib/types/robots/box-import.ts +97 -0
  420. package/src/alphalib/types/robots/box-store.ts +94 -0
  421. package/src/alphalib/types/robots/cloudfiles-import.ts +0 -1
  422. package/src/alphalib/types/robots/cloudfiles-store.ts +0 -1
  423. package/src/alphalib/types/robots/cloudflare-import.ts +0 -1
  424. package/src/alphalib/types/robots/cloudflare-store.ts +0 -1
  425. package/src/alphalib/types/robots/digitalocean-import.ts +0 -1
  426. package/src/alphalib/types/robots/digitalocean-store.ts +0 -1
  427. package/src/alphalib/types/robots/document-autorotate.ts +8 -1
  428. package/src/alphalib/types/robots/document-convert.ts +10 -3
  429. package/src/alphalib/types/robots/document-merge.ts +0 -1
  430. package/src/alphalib/types/robots/document-ocr.ts +0 -1
  431. package/src/alphalib/types/robots/document-optimize.ts +0 -1
  432. package/src/alphalib/types/robots/document-split.ts +9 -1
  433. package/src/alphalib/types/robots/document-thumbs.ts +26 -4
  434. package/src/alphalib/types/robots/dropbox-import.ts +0 -1
  435. package/src/alphalib/types/robots/dropbox-store.ts +0 -1
  436. package/src/alphalib/types/robots/edgly-deliver.ts +8 -1
  437. package/src/alphalib/types/robots/file-compress.ts +8 -1
  438. package/src/alphalib/types/robots/file-decompress.ts +30 -5
  439. package/src/alphalib/types/robots/file-filter.ts +23 -6
  440. package/src/alphalib/types/robots/file-hash.ts +23 -1
  441. package/src/alphalib/types/robots/file-preview.ts +8 -1
  442. package/src/alphalib/types/robots/file-read.ts +9 -1
  443. package/src/alphalib/types/robots/file-serve.ts +39 -7
  444. package/src/alphalib/types/robots/file-verify.ts +0 -1
  445. package/src/alphalib/types/robots/file-virusscan.ts +6 -4
  446. package/src/alphalib/types/robots/file-watermark.ts +10 -0
  447. package/src/alphalib/types/robots/ftp-import.ts +0 -1
  448. package/src/alphalib/types/robots/ftp-store.ts +0 -1
  449. package/src/alphalib/types/robots/google-import.ts +0 -1
  450. package/src/alphalib/types/robots/google-store.ts +0 -1
  451. package/src/alphalib/types/robots/html-convert.ts +0 -1
  452. package/src/alphalib/types/robots/http-import.ts +0 -1
  453. package/src/alphalib/types/robots/image-bgremove.ts +4 -2
  454. package/src/alphalib/types/robots/image-copyrightdetect.ts +167 -0
  455. package/src/alphalib/types/robots/image-describe.ts +0 -1
  456. package/src/alphalib/types/robots/image-enhance.ts +185 -0
  457. package/src/alphalib/types/robots/image-facedetect.ts +0 -1
  458. package/src/alphalib/types/robots/image-generate.ts +74 -8
  459. package/src/alphalib/types/robots/image-merge.ts +0 -1
  460. package/src/alphalib/types/robots/image-ocr.ts +0 -1
  461. package/src/alphalib/types/robots/image-optimize.ts +16 -3
  462. package/src/alphalib/types/robots/image-resize.ts +37 -1
  463. package/src/alphalib/types/robots/image-upscale.ts +93 -0
  464. package/src/alphalib/types/robots/mega-import.ts +123 -0
  465. package/src/alphalib/types/robots/mega-store.ts +109 -0
  466. package/src/alphalib/types/robots/meta-read.ts +8 -0
  467. package/src/alphalib/types/robots/meta-write.ts +0 -1
  468. package/src/alphalib/types/robots/minio-import.ts +0 -1
  469. package/src/alphalib/types/robots/minio-store.ts +0 -1
  470. package/src/alphalib/types/robots/progress-simulate.ts +13 -0
  471. package/src/alphalib/types/robots/s3-import.ts +0 -1
  472. package/src/alphalib/types/robots/s3-store.ts +0 -1
  473. package/src/alphalib/types/robots/script-run.ts +11 -1
  474. package/src/alphalib/types/robots/sftp-import.ts +0 -1
  475. package/src/alphalib/types/robots/sftp-store.ts +0 -1
  476. package/src/alphalib/types/robots/speech-transcribe.ts +0 -1
  477. package/src/alphalib/types/robots/supabase-import.ts +0 -1
  478. package/src/alphalib/types/robots/supabase-store.ts +0 -1
  479. package/src/alphalib/types/robots/swift-import.ts +0 -1
  480. package/src/alphalib/types/robots/swift-store.ts +0 -1
  481. package/src/alphalib/types/robots/text-speak.ts +0 -1
  482. package/src/alphalib/types/robots/text-translate.ts +0 -1
  483. package/src/alphalib/types/robots/tigris-import.ts +0 -1
  484. package/src/alphalib/types/robots/tigris-store.ts +0 -1
  485. package/src/alphalib/types/robots/tlcdn-deliver.ts +8 -1
  486. package/src/alphalib/types/robots/tus-store.ts +1 -14
  487. package/src/alphalib/types/robots/upload-handle.ts +0 -1
  488. package/src/alphalib/types/robots/video-adaptive.ts +22 -6
  489. package/src/alphalib/types/robots/video-artwork.ts +100 -0
  490. package/src/alphalib/types/robots/video-concat.ts +30 -1
  491. package/src/alphalib/types/robots/video-encode.ts +0 -1
  492. package/src/alphalib/types/robots/video-generate.ts +120 -0
  493. package/src/alphalib/types/robots/video-merge.ts +33 -1
  494. package/src/alphalib/types/robots/video-ondemand.ts +3 -4
  495. package/src/alphalib/types/robots/video-split.ts +117 -0
  496. package/src/alphalib/types/robots/video-subtitle.ts +61 -8
  497. package/src/alphalib/types/robots/video-thumbs.ts +0 -1
  498. package/src/alphalib/types/robots/vimeo-import.ts +0 -1
  499. package/src/alphalib/types/robots/vimeo-store.ts +14 -3
  500. package/src/alphalib/types/robots/wasabi-import.ts +0 -1
  501. package/src/alphalib/types/robots/wasabi-store.ts +0 -1
  502. package/src/alphalib/types/robots/youtube-store.ts +4 -5
  503. package/src/alphalib/types/template.ts +47 -15
  504. package/src/alphalib/types/templateCredential.ts +1 -0
  505. package/src/alphalib/zodParseWithContext.ts +19 -12
  506. package/src/bearerToken.ts +14 -3
  507. package/src/cli/commands/BaseCommand.ts +7 -9
  508. package/src/cli/commands/auth.ts +66 -32
  509. package/src/cli/generateIntentDocs.ts +30 -9
  510. package/src/cli/helpers.ts +278 -13
  511. package/src/cli/intentCommandSpecs.ts +4 -9
  512. package/src/cli/intentRuntime.ts +8 -3
  513. package/src/cli/semanticIntents/imageDescribe.ts +4 -1
  514. package/src/cli/semanticIntents/imageGenerate.ts +254 -0
  515. package/src/cli/semanticIntents/index.ts +6 -1
  516. package/src/cli/semanticIntents/markdownPdf.ts +1 -1
  517. package/src/cli.ts +3 -2
  518. package/src/robots.ts +2 -2
@@ -9,7 +9,14 @@ import {
9
9
  import type { OptionalAuthParams } from '../../apiTypes.ts'
10
10
  import { mintBearerTokenWithCredentials } from '../../bearerToken.ts'
11
11
  import { Transloadit } from '../../Transloadit.ts'
12
- import { readCliInput, requireEnvCredentials } from '../helpers.ts'
12
+ import type { CliKeySecretCredentials, ResolvedCliConfig } from '../helpers.ts'
13
+ import {
14
+ buildMissingCredentialsMessage,
15
+ readCliInput,
16
+ requireCliCredentials,
17
+ resolveCliConfig,
18
+ } from '../helpers.ts'
19
+ import type { IOutputCtl } from '../OutputCtl.ts'
13
20
  import { UnauthenticatedCommand } from './BaseCommand.ts'
14
21
 
15
22
  type UrlParamPrimitive = string | number | boolean
@@ -195,14 +202,49 @@ export interface RunSmartSigOptions {
195
202
  providedInput?: string
196
203
  }
197
204
 
198
- export async function runSig(options: RunSigOptions = {}): Promise<void> {
199
- const credentialsResult = requireEnvCredentials()
205
+ function reportStandaloneCredentialsError(error: string): null {
206
+ console.error(error)
207
+ process.exitCode = 1
208
+ return null
209
+ }
210
+
211
+ function getStandaloneCredentials(): CliKeySecretCredentials | null {
212
+ const credentialsResult = requireCliCredentials()
200
213
  if (!credentialsResult.ok) {
201
- console.error(credentialsResult.error)
202
- process.exitCode = 1
214
+ return reportStandaloneCredentialsError(credentialsResult.error)
215
+ }
216
+
217
+ return credentialsResult.credentials
218
+ }
219
+
220
+ function getCommandCredentials(output: IOutputCtl): CliKeySecretCredentials | null {
221
+ const credentialsResult = requireCliCredentials()
222
+ if (!credentialsResult.ok) {
223
+ output.error(credentialsResult.error)
224
+ return null
225
+ }
226
+
227
+ return credentialsResult.credentials
228
+ }
229
+
230
+ function getCommandConfigWithCredentials(output: IOutputCtl): {
231
+ config: ResolvedCliConfig
232
+ credentials: CliKeySecretCredentials
233
+ } | null {
234
+ const config = resolveCliConfig()
235
+ if (config.credentials == null) {
236
+ output.error(config.loadError ?? buildMissingCredentialsMessage())
237
+ return null
238
+ }
239
+
240
+ return { config, credentials: config.credentials }
241
+ }
242
+
243
+ export async function runSig(options: RunSigOptions = {}): Promise<void> {
244
+ const credentials = getStandaloneCredentials()
245
+ if (credentials == null) {
203
246
  return
204
247
  }
205
- const credentials = credentialsResult.credentials
206
248
 
207
249
  const { content } = await readCliInput({
208
250
  providedInput: options.providedInput,
@@ -220,13 +262,10 @@ export async function runSig(options: RunSigOptions = {}): Promise<void> {
220
262
  }
221
263
 
222
264
  export async function runSmartSig(options: RunSmartSigOptions = {}): Promise<void> {
223
- const credentialsResult = requireEnvCredentials()
224
- if (!credentialsResult.ok) {
225
- console.error(credentialsResult.error)
226
- process.exitCode = 1
265
+ const credentials = getStandaloneCredentials()
266
+ if (credentials == null) {
227
267
  return
228
268
  }
229
- const credentials = credentialsResult.credentials
230
269
 
231
270
  const { content } = await readCliInput({
232
271
  providedInput: options.providedInput,
@@ -260,6 +299,8 @@ export class SignatureCommand extends UnauthenticatedCommand {
260
299
  details: `
261
300
  Read params JSON from stdin and output signed payload JSON.
262
301
  If no input is provided, generates a signature with default params.
302
+ Credentials are resolved from the shell environment, the current working directory .env, or
303
+ ~/.transloadit/credentials.
263
304
  `,
264
305
  examples: [
265
306
  ['Generate signature', 'echo \'{"steps":{}}\' | transloadit signature'],
@@ -273,12 +314,8 @@ export class SignatureCommand extends UnauthenticatedCommand {
273
314
  })
274
315
 
275
316
  protected async run(): Promise<number | undefined> {
276
- const credentialsResult = requireEnvCredentials()
277
- if (!credentialsResult.ok) {
278
- this.output.error(credentialsResult.error)
279
- return 1
280
- }
281
- const credentials = credentialsResult.credentials
317
+ const credentials = getCommandCredentials(this.output)
318
+ if (credentials == null) return 1
282
319
 
283
320
  const { content } = await readCliInput({ allowStdinWhenNoPath: true })
284
321
  const rawInput = (content ?? '').trim()
@@ -312,6 +349,8 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
312
349
  Read Smart CDN params JSON from stdin and output a signed URL.
313
350
  Required fields: workspace, template, input
314
351
  Optional fields: expire_at_ms, url_params
352
+ Credentials are resolved from the shell environment, the current working directory .env, or
353
+ ~/.transloadit/credentials.
315
354
  `,
316
355
  examples: [
317
356
  [
@@ -326,12 +365,8 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
326
365
  })
327
366
 
328
367
  protected async run(): Promise<number | undefined> {
329
- const credentialsResult = requireEnvCredentials()
330
- if (!credentialsResult.ok) {
331
- this.output.error(credentialsResult.error)
332
- return 1
333
- }
334
- const credentials = credentialsResult.credentials
368
+ const credentials = getCommandCredentials(this.output)
369
+ if (credentials == null) return 1
335
370
 
336
371
  const { content } = await readCliInput({ allowStdinWhenNoPath: true })
337
372
  const rawInput = (content ?? '').trim()
@@ -359,8 +394,9 @@ export class TokenCommand extends UnauthenticatedCommand {
359
394
  category: 'Auth',
360
395
  description: 'Mint a short-lived bearer token',
361
396
  details: `
362
- Calls POST /token using HTTP Basic Auth (TRANSLOADIT_KEY + TRANSLOADIT_SECRET) and prints the
363
- JSON response to stdout.
397
+ Calls POST /token using HTTP Basic Auth and prints the JSON response to stdout.
398
+ Credentials are resolved from the shell environment, the current working directory .env, or
399
+ ~/.transloadit/credentials.
364
400
  `,
365
401
  examples: [
366
402
  ['Mint an MCP token (default aud)', 'transloadit auth token'],
@@ -378,14 +414,12 @@ export class TokenCommand extends UnauthenticatedCommand {
378
414
  })
379
415
 
380
416
  protected override async run(): Promise<number | undefined> {
381
- const credentialsResult = requireEnvCredentials()
382
- if (!credentialsResult.ok) {
383
- this.output.error(credentialsResult.error)
384
- return 1
385
- }
417
+ const resolved = getCommandConfigWithCredentials(this.output)
418
+ if (resolved == null) return 1
386
419
 
387
- const result = await mintBearerTokenWithCredentials(credentialsResult.credentials, {
388
- endpoint: this.endpoint,
420
+ const result = await mintBearerTokenWithCredentials(resolved.credentials, {
421
+ allowProcessEnvEndpointFallback: false,
422
+ endpoint: this.endpoint ?? resolved.config.credentialsEndpoint,
389
423
  aud: this.aud,
390
424
  scope: this.scope,
391
425
  })
@@ -1,5 +1,6 @@
1
1
  import { mkdir, readFile, writeFile } from 'node:fs/promises'
2
2
  import { dirname } from 'node:path'
3
+ import { pathToFileURL } from 'node:url'
3
4
  import {
4
5
  getConcurrencyOptionDocumentation,
5
6
  getDeleteAfterProcessingOptionDocumentation,
@@ -127,7 +128,14 @@ function getBackendSummary(catalogDefinition: IntentDefinition): string {
127
128
  function getUsage(definition: ResolvedIntentCommandDefinition): string {
128
129
  const parts = ['npx transloadit', ...definition.paths]
129
130
  if (definition.runnerKind !== 'no-input') {
130
- parts.push('--input', '<path|dir|url|->')
131
+ if (
132
+ 'inputPolicy' in definition.intentDefinition &&
133
+ definition.intentDefinition.inputPolicy.kind === 'optional'
134
+ ) {
135
+ parts.push('[--input', '<path|dir|url|->]')
136
+ } else {
137
+ parts.push('--input', '<path|dir|url|->')
138
+ }
131
139
  }
132
140
  parts.push('[options]')
133
141
  return parts.join(' ')
@@ -322,7 +330,7 @@ function renderAtAGlanceTable(definitions: ResolvedIntentCommandDefinition[]): s
322
330
  )
323
331
  }
324
332
 
325
- function renderIntentDocsBody({
333
+ export function renderIntentDocsBody({
326
334
  definitions,
327
335
  headingLevel,
328
336
  }: {
@@ -334,6 +342,8 @@ function renderIntentDocsBody({
334
342
  `${heading} At a glance`,
335
343
  '',
336
344
  'Intent commands are the fastest path to common one-off tasks from the CLI.',
345
+ 'Authentication is resolved in this order: shell environment, the current working directory `.env`, then `~/.transloadit/credentials`.',
346
+ 'The home credentials file uses dotenv syntax and can include `TRANSLOADIT_KEY`, `TRANSLOADIT_SECRET`, `TRANSLOADIT_ENDPOINT`, and `TRANSLOADIT_AUTH_TOKEN`.',
337
347
  'Use `--print-urls` when you want temporary result URLs without downloading locally.',
338
348
  'All intent commands also support the global CLI flags `--json`, `--log-level`, `--endpoint`, and `--help`.',
339
349
  '',
@@ -359,6 +369,15 @@ function renderIntentDocsBody({
359
369
  return lines.join('\n').trim()
360
370
  }
361
371
 
372
+ function isEntrypoint(): boolean {
373
+ const entrypoint = process.argv[1]
374
+ if (entrypoint == null) {
375
+ return false
376
+ }
377
+
378
+ return import.meta.url === pathToFileURL(entrypoint).href
379
+ }
380
+
362
381
  function replaceGeneratedBlock({
363
382
  endMarker,
364
383
  markdown,
@@ -410,10 +429,12 @@ async function main(): Promise<void> {
410
429
  await writeFile(readmeUrl, `${nextReadme}\n`)
411
430
  }
412
431
 
413
- main().catch((error) => {
414
- if (!(error instanceof Error)) {
415
- throw new Error(`Was thrown a non-error: ${String(error)}`)
416
- }
417
- console.error(error)
418
- process.exit(1)
419
- })
432
+ if (isEntrypoint()) {
433
+ main().catch((error) => {
434
+ if (!(error instanceof Error)) {
435
+ throw new Error(`Was thrown a non-error: ${String(error)}`)
436
+ }
437
+ console.error(error)
438
+ process.exit(1)
439
+ })
440
+ }
@@ -1,30 +1,295 @@
1
1
  import fs from 'node:fs'
2
2
  import fsp from 'node:fs/promises'
3
+ import { homedir } from 'node:os'
4
+ import path from 'node:path'
3
5
  import type { Readable } from 'node:stream'
6
+ import { parse as parseDotenv } from 'dotenv'
4
7
  import { isAPIError } from './types.ts'
5
8
 
6
- const MISSING_CREDENTIALS_MESSAGE =
7
- 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.'
9
+ export type CliKeySecretCredentials = { authKey: string; authSecret: string }
10
+ export type CliAuthToken = { authToken: string }
11
+ export type CliAuth = CliKeySecretCredentials | CliAuthToken
12
+ type CliEnvSource = {
13
+ name: 'env' | 'credentialsFile'
14
+ values: Record<string, string | undefined>
15
+ }
16
+
17
+ let loadedProjectDotenvPath: string | undefined
18
+ let projectDotenvInjectedValues: Record<string, string> | undefined
19
+ let projectDotenvPreviousValues: Record<string, string | undefined> | undefined
20
+ let shellEnvBeforeProjectDotenv: Record<string, string | undefined> | undefined
21
+
22
+ type LoadCliEnvSourcesResult = {
23
+ loadError?: string
24
+ shellEnvSource: CliEnvSource
25
+ sources: CliEnvSource[]
26
+ }
27
+
28
+ export type ResolvedCliConfig = {
29
+ auth?: CliAuth
30
+ credentials?: CliKeySecretCredentials
31
+ credentialsEndpoint?: string
32
+ endpoint?: string
33
+ loadError?: string
34
+ }
35
+
36
+ function normalizeEnvValue(value: string | undefined): string | undefined {
37
+ const trimmed = value?.trim()
38
+ return trimmed ? trimmed : undefined
39
+ }
40
+
41
+ function getConfiguredCredentialsFilePath(): string {
42
+ const configuredPath = normalizeEnvValue(process.env.TRANSLOADIT_CREDENTIALS_FILE)
43
+ if (configuredPath != null) {
44
+ return path.resolve(configuredPath)
45
+ }
46
+
47
+ return path.join(homedir(), '.transloadit', 'credentials')
48
+ }
49
+
50
+ function getProjectDotenvPath(): string {
51
+ return path.resolve(process.cwd(), '.env')
52
+ }
53
+
54
+ function getDisplayPath(filePath: string): string {
55
+ const normalizedHome = path.resolve(homedir())
56
+ const normalizedFilePath = path.resolve(filePath)
57
+ if (normalizedFilePath === normalizedHome) return '~'
58
+ if (normalizedFilePath.startsWith(`${normalizedHome}${path.sep}`)) {
59
+ return `~${normalizedFilePath.slice(normalizedHome.length)}`
60
+ }
61
+
62
+ return normalizedFilePath
63
+ }
64
+
65
+ export function buildMissingCredentialsMessage(): string {
66
+ return [
67
+ 'Missing credentials.',
68
+ '',
69
+ 'Looked for TRANSLOADIT_KEY + TRANSLOADIT_SECRET in this order:',
70
+ '1. Shell env: TRANSLOADIT_KEY / TRANSLOADIT_SECRET',
71
+ `2. Current directory .env: ${getProjectDotenvPath()}`,
72
+ `3. Credentials file: ${getDisplayPath(getConfiguredCredentialsFilePath())}`,
73
+ ].join('\n')
74
+ }
75
+
76
+ export function buildMissingAuthMessage(): string {
77
+ return [
78
+ 'Missing authentication.',
79
+ '',
80
+ 'Looked for TRANSLOADIT_AUTH_TOKEN or TRANSLOADIT_KEY + TRANSLOADIT_SECRET in this order:',
81
+ '1. Shell env: TRANSLOADIT_AUTH_TOKEN, or TRANSLOADIT_KEY / TRANSLOADIT_SECRET',
82
+ `2. Current directory .env: ${getProjectDotenvPath()}`,
83
+ `3. Credentials file: ${getDisplayPath(getConfiguredCredentialsFilePath())}`,
84
+ ].join('\n')
85
+ }
86
+
87
+ function readEnvFile(
88
+ filePath: string,
89
+ ): { ok: true; source: CliEnvSource } | { ok: false; error: string } | null {
90
+ if (!fs.existsSync(filePath)) return null
91
+
92
+ try {
93
+ return {
94
+ ok: true,
95
+ source: {
96
+ name: 'credentialsFile',
97
+ values: parseDotenv(fs.readFileSync(filePath)),
98
+ },
99
+ }
100
+ } catch (err) {
101
+ if (!(err instanceof Error)) {
102
+ throw new Error(`Was thrown a non-error: ${err}`)
103
+ }
104
+ return { ok: false, error: `Failed to read ${filePath}: ${err.message}` }
105
+ }
106
+ }
107
+
108
+ export function loadProjectDotenvIntoProcessEnv(): string | undefined {
109
+ const projectDotenvPath = getProjectDotenvPath()
110
+ if (loadedProjectDotenvPath !== projectDotenvPath) {
111
+ restoreProjectDotenvFromProcessEnv()
112
+ shellEnvBeforeProjectDotenv = { ...process.env }
113
+ loadedProjectDotenvPath = projectDotenvPath
114
+ }
115
+
116
+ const projectDotenvResult = readEnvFile(projectDotenvPath)
117
+ if (projectDotenvResult == null) {
118
+ restoreProjectDotenvFromProcessEnv()
119
+ projectDotenvInjectedValues = undefined
120
+ projectDotenvPreviousValues = undefined
121
+ return undefined
122
+ }
123
+
124
+ if (!projectDotenvResult.ok) return projectDotenvResult.error
125
+ if (projectDotenvInjectedValues != null) return undefined
126
+
127
+ const previousValues: Record<string, string | undefined> = {}
128
+ const injectedValues: Record<string, string> = {}
129
+ for (const [key, value] of Object.entries(projectDotenvResult.source.values)) {
130
+ if (value == null) continue
131
+ if (normalizeEnvValue(process.env[key]) != null) continue
132
+ previousValues[key] = process.env[key]
133
+ process.env[key] = value
134
+ injectedValues[key] = value
135
+ }
136
+
137
+ projectDotenvPreviousValues = previousValues
138
+ projectDotenvInjectedValues = injectedValues
139
+ return undefined
140
+ }
141
+
142
+ function getShellEnvValues(): Record<string, string | undefined> {
143
+ if (loadedProjectDotenvPath === getProjectDotenvPath() && shellEnvBeforeProjectDotenv != null) {
144
+ return shellEnvBeforeProjectDotenv
145
+ }
146
+
147
+ return { ...process.env }
148
+ }
149
+
150
+ function restoreProjectDotenvFromProcessEnv(): void {
151
+ if (projectDotenvInjectedValues == null || projectDotenvPreviousValues == null) return
152
+
153
+ for (const [key, injectedValue] of Object.entries(projectDotenvInjectedValues)) {
154
+ if (process.env[key] !== injectedValue) continue
155
+
156
+ const previousValue = projectDotenvPreviousValues[key]
157
+ if (previousValue == null) {
158
+ delete process.env[key]
159
+ continue
160
+ }
161
+
162
+ process.env[key] = previousValue
163
+ }
164
+
165
+ projectDotenvInjectedValues = undefined
166
+ projectDotenvPreviousValues = undefined
167
+ }
168
+
169
+ function loadCliEnvSources(): LoadCliEnvSourcesResult {
170
+ const shellEnvSource: CliEnvSource = {
171
+ name: 'env',
172
+ values: getShellEnvValues(),
173
+ }
174
+ const loadErrors: string[] = []
175
+
176
+ const projectDotenvLoadError = loadProjectDotenvIntoProcessEnv()
177
+ if (projectDotenvLoadError != null) {
178
+ loadErrors.push(projectDotenvLoadError)
179
+ }
180
+
181
+ const sources: CliEnvSource[] = [
182
+ {
183
+ name: 'env',
184
+ values: { ...process.env },
185
+ },
186
+ ]
187
+
188
+ const credentialsFilePath = getConfiguredCredentialsFilePath()
189
+ const credentialsFileResult = readEnvFile(credentialsFilePath)
190
+ if (credentialsFileResult?.ok === true) {
191
+ sources.push(credentialsFileResult.source)
192
+ } else if (credentialsFileResult?.ok === false) {
193
+ loadErrors.push(credentialsFileResult.error)
194
+ } else if (normalizeEnvValue(process.env.TRANSLOADIT_CREDENTIALS_FILE) != null) {
195
+ loadErrors.push(`Configured credentials file does not exist: ${credentialsFilePath}`)
196
+ }
197
+
198
+ return {
199
+ shellEnvSource,
200
+ sources,
201
+ ...(loadErrors[0] ? { loadError: loadErrors[0] } : {}),
202
+ }
203
+ }
8
204
 
9
- type EnvCredentials = { authKey: string; authSecret: string }
205
+ function getSourceValue(source: CliEnvSource, keys: string[]): string | undefined {
206
+ for (const key of keys) {
207
+ const value = normalizeEnvValue(source.values[key])
208
+ if (value != null) return value
209
+ }
10
210
 
11
- function getEnvCredentials(): { authKey: string; authSecret: string } | null {
12
- const authKey = process.env.TRANSLOADIT_KEY ?? process.env.TRANSLOADIT_AUTH_KEY
13
- const authSecret = process.env.TRANSLOADIT_SECRET ?? process.env.TRANSLOADIT_AUTH_SECRET
211
+ return undefined
212
+ }
14
213
 
15
- if (!authKey || !authSecret) return null
214
+ function getSourceCredentials(source: CliEnvSource): CliKeySecretCredentials | undefined {
215
+ const authKey = getSourceValue(source, ['TRANSLOADIT_KEY', 'TRANSLOADIT_AUTH_KEY'])
216
+ const authSecret = getSourceValue(source, ['TRANSLOADIT_SECRET', 'TRANSLOADIT_AUTH_SECRET'])
217
+ if (authKey == null || authSecret == null) return undefined
16
218
 
17
219
  return { authKey, authSecret }
18
220
  }
19
221
 
20
- type RequireEnvCredentialsResult =
21
- | { ok: true; credentials: EnvCredentials }
222
+ function getSourceAuthToken(source: CliEnvSource): CliAuthToken | undefined {
223
+ const authToken = getSourceValue(source, ['TRANSLOADIT_AUTH_TOKEN'])
224
+ if (authToken == null) return undefined
225
+
226
+ return { authToken }
227
+ }
228
+
229
+ function resolveEndpointForSource(
230
+ source: CliEnvSource | undefined,
231
+ shellEnvSource: CliEnvSource,
232
+ ): string | undefined {
233
+ const shellEndpoint = getSourceValue(shellEnvSource, ['TRANSLOADIT_ENDPOINT'])
234
+ if (shellEndpoint != null) return shellEndpoint
235
+ if (source == null) return undefined
236
+
237
+ return getSourceValue(source, ['TRANSLOADIT_ENDPOINT'])
238
+ }
239
+
240
+ export function resolveCliConfig(): ResolvedCliConfig {
241
+ const { loadError, shellEnvSource, sources } = loadCliEnvSources()
242
+ let auth: CliAuth | undefined
243
+ let authSource: CliEnvSource | undefined
244
+ let credentials: CliKeySecretCredentials | undefined
245
+ let credentialsSource: CliEnvSource | undefined
246
+
247
+ for (const source of sources) {
248
+ if (auth == null) {
249
+ const authToken = getSourceAuthToken(source)
250
+ if (authToken != null) {
251
+ auth = authToken
252
+ authSource = source
253
+ } else {
254
+ const sourceCredentials = getSourceCredentials(source)
255
+ if (sourceCredentials != null) {
256
+ auth = sourceCredentials
257
+ authSource = source
258
+ }
259
+ }
260
+ }
261
+
262
+ if (credentials != null) continue
263
+
264
+ const sourceCredentials = getSourceCredentials(source)
265
+ if (sourceCredentials != null) {
266
+ credentials = sourceCredentials
267
+ credentialsSource = source
268
+ }
269
+ }
270
+
271
+ return {
272
+ ...(auth != null ? { auth } : {}),
273
+ ...(credentials != null ? { credentials } : {}),
274
+ ...(authSource != null
275
+ ? { endpoint: resolveEndpointForSource(authSource, shellEnvSource) }
276
+ : {}),
277
+ ...(credentialsSource != null
278
+ ? { credentialsEndpoint: resolveEndpointForSource(credentialsSource, shellEnvSource) }
279
+ : {}),
280
+ ...(loadError != null ? { loadError } : {}),
281
+ }
282
+ }
283
+
284
+ type RequireCliCredentialsResult =
285
+ | { ok: true; credentials: CliKeySecretCredentials }
22
286
  | { ok: false; error: string }
23
287
 
24
- export function requireEnvCredentials(): RequireEnvCredentialsResult {
25
- const credentials = getEnvCredentials()
26
- if (credentials == null) return { ok: false, error: MISSING_CREDENTIALS_MESSAGE }
27
- return { ok: true, credentials }
288
+ export function requireCliCredentials(): RequireCliCredentialsResult {
289
+ const { credentials, loadError } = resolveCliConfig()
290
+ if (credentials != null) return { ok: true, credentials }
291
+ if (loadError != null) return { ok: false, error: loadError }
292
+ return { ok: false, error: buildMissingCredentialsMessage() }
28
293
  }
29
294
 
30
295
  export function createReadStream(file: string): Readable {
@@ -37,10 +37,6 @@ import {
37
37
  robotImageBgremoveInstructionsSchema,
38
38
  meta as robotImageBgremoveMeta,
39
39
  } from '../alphalib/types/robots/image-bgremove.ts'
40
- import {
41
- robotImageGenerateInstructionsSchema,
42
- meta as robotImageGenerateMeta,
43
- } from '../alphalib/types/robots/image-generate.ts'
44
40
  import {
45
41
  robotImageOptimizeInstructionsSchema,
46
42
  meta as robotImageOptimizeMeta,
@@ -169,11 +165,10 @@ export function findIntentDefinitionByPaths(
169
165
  }
170
166
 
171
167
  export const intentCatalog = [
172
- defineRobotIntent({
173
- kind: 'robot',
174
- robot: '/image/generate',
175
- meta: robotImageGenerateMeta,
176
- schema: robotImageGenerateInstructionsSchema,
168
+ defineSemanticIntent({
169
+ kind: 'semantic',
170
+ paths: ['image', 'generate'],
171
+ semantic: 'image-generate',
177
172
  }),
178
173
  defineRobotIntent({
179
174
  kind: 'robot',
@@ -318,8 +318,9 @@ function createSingleStep(
318
318
  function createDynamicIntentStep(
319
319
  execution: IntentDynamicStepExecutionDefinition,
320
320
  rawValues: Record<string, unknown>,
321
+ hasInputs: boolean,
321
322
  ): Record<string, unknown> {
322
- return getSemanticIntentDescriptor(execution.handler).createStep(rawValues)
323
+ return getSemanticIntentDescriptor(execution.handler).createStep(rawValues, { hasInputs })
323
324
  }
324
325
 
325
326
  function requiresLocalInput(
@@ -367,7 +368,11 @@ async function executeIntentCommand({
367
368
  rawValues,
368
369
  createOptions.inputs.length > 0,
369
370
  )
370
- : createDynamicIntentStep(definition.execution, rawValues),
371
+ : createDynamicIntentStep(
372
+ definition.execution,
373
+ rawValues,
374
+ createOptions.inputs.length > 0,
375
+ ),
371
376
  } as AssembliesCreateOptions['stepsData'],
372
377
  }
373
378
 
@@ -563,7 +568,7 @@ abstract class GeneratedFileIntentCommandBase extends GeneratedIntentCommandBase
563
568
 
564
569
  const execution = this.getIntentDefinition().execution
565
570
  if (execution.kind === 'dynamic-step') {
566
- createDynamicIntentStep(execution, rawValues)
571
+ createDynamicIntentStep(execution, rawValues, this.getProvidedInputCount() > 0)
567
572
  }
568
573
 
569
574
  return undefined
@@ -212,7 +212,10 @@ function buildDescribeAiChatMessages({
212
212
  }
213
213
  }
214
214
 
215
- function createImageDescribeStep(rawValues: Record<string, unknown>): Record<string, unknown> {
215
+ function createImageDescribeStep(
216
+ rawValues: Record<string, unknown>,
217
+ _context: { hasInputs: boolean },
218
+ ): Record<string, unknown> {
216
219
  const { fields, profile } = resolveImageDescribeRequest(rawValues)
217
220
  if (fields.length === 1 && fields[0] === 'labels') {
218
221
  return {