transloadit 4.13.1 → 5.0.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 (637) hide show
  1. package/README.md +58 -6
  2. package/dist/ApiError.d.ts +6 -2
  3. package/dist/ApiError.d.ts.map +1 -1
  4. package/dist/ApiError.js +6 -2
  5. package/dist/ApiError.js.map +1 -1
  6. package/dist/Transloadit.d.ts +2 -0
  7. package/dist/Transloadit.d.ts.map +1 -1
  8. package/dist/Transloadit.js +15 -4
  9. package/dist/Transloadit.js.map +1 -1
  10. package/dist/alphalib/aiMessages.d.ts +33254 -0
  11. package/dist/alphalib/aiMessages.d.ts.map +1 -0
  12. package/dist/alphalib/aiMessages.js +479 -0
  13. package/dist/alphalib/aiMessages.js.map +1 -0
  14. package/dist/alphalib/assembly-linter.d.ts.map +1 -1
  15. package/dist/alphalib/assembly-linter.js +20 -15
  16. package/dist/alphalib/assembly-linter.js.map +1 -1
  17. package/dist/alphalib/englishList.d.ts +3 -0
  18. package/dist/alphalib/englishList.d.ts.map +1 -0
  19. package/dist/alphalib/englishList.js +12 -0
  20. package/dist/alphalib/englishList.js.map +1 -0
  21. package/dist/alphalib/errors.d.ts +16 -0
  22. package/dist/alphalib/errors.d.ts.map +1 -1
  23. package/dist/alphalib/errors.js +124 -13
  24. package/dist/alphalib/errors.js.map +1 -1
  25. package/dist/alphalib/imagemagickDensity.d.ts.map +1 -1
  26. package/dist/alphalib/imagemagickDensity.js +2 -2
  27. package/dist/alphalib/imagemagickDensity.js.map +1 -1
  28. package/dist/alphalib/lib/zodInputSemantics.d.ts +18 -0
  29. package/dist/alphalib/lib/zodInputSemantics.d.ts.map +1 -0
  30. package/dist/alphalib/lib/zodInputSemantics.js +86 -0
  31. package/dist/alphalib/lib/zodInputSemantics.js.map +1 -0
  32. package/dist/alphalib/object.d.ts +42 -2
  33. package/dist/alphalib/object.d.ts.map +1 -1
  34. package/dist/alphalib/object.js +133 -0
  35. package/dist/alphalib/object.js.map +1 -1
  36. package/dist/alphalib/stepParsing.d.ts +1 -0
  37. package/dist/alphalib/stepParsing.d.ts.map +1 -1
  38. package/dist/alphalib/stepParsing.js +9 -1
  39. package/dist/alphalib/stepParsing.js.map +1 -1
  40. package/dist/alphalib/types/apiParameterDescription.d.ts +14 -0
  41. package/dist/alphalib/types/apiParameterDescription.d.ts.map +1 -0
  42. package/dist/alphalib/types/apiParameterDescription.js +20 -0
  43. package/dist/alphalib/types/apiParameterDescription.js.map +1 -0
  44. package/dist/alphalib/types/assembliesGet.d.ts +1 -1
  45. package/dist/alphalib/types/assemblyReplay.d.ts +4 -4
  46. package/dist/alphalib/types/assemblyStatus.d.ts +7196 -64686
  47. package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
  48. package/dist/alphalib/types/assemblyStatus.js +74 -55
  49. package/dist/alphalib/types/assemblyStatus.js.map +1 -1
  50. package/dist/alphalib/types/errorReason.d.ts +7 -0
  51. package/dist/alphalib/types/errorReason.d.ts.map +1 -0
  52. package/dist/alphalib/types/errorReason.js +14 -0
  53. package/dist/alphalib/types/errorReason.js.map +1 -0
  54. package/dist/alphalib/types/file.d.ts +7 -0
  55. package/dist/alphalib/types/file.d.ts.map +1 -1
  56. package/dist/alphalib/types/file.js +15 -0
  57. package/dist/alphalib/types/file.js.map +1 -1
  58. package/dist/alphalib/types/fileHash.d.ts +16 -0
  59. package/dist/alphalib/types/fileHash.d.ts.map +1 -0
  60. package/dist/alphalib/types/fileHash.js +10 -0
  61. package/dist/alphalib/types/fileHash.js.map +1 -0
  62. package/dist/alphalib/types/responseErrors/HttpImportRobot.d.ts +23 -0
  63. package/dist/alphalib/types/responseErrors/HttpImportRobot.d.ts.map +1 -0
  64. package/dist/alphalib/types/responseErrors/HttpImportRobot.js +23 -0
  65. package/dist/alphalib/types/responseErrors/HttpImportRobot.js.map +1 -0
  66. package/dist/alphalib/types/robots/_ai-models.d.ts +28 -0
  67. package/dist/alphalib/types/robots/_ai-models.d.ts.map +1 -0
  68. package/dist/alphalib/types/robots/_ai-models.js +80 -0
  69. package/dist/alphalib/types/robots/_ai-models.js.map +1 -0
  70. package/dist/alphalib/types/robots/_index.d.ts +713 -1329
  71. package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
  72. package/dist/alphalib/types/robots/_index.js +4 -0
  73. package/dist/alphalib/types/robots/_index.js.map +1 -1
  74. package/dist/alphalib/types/robots/_instructions-primitives.d.ts +504 -129
  75. package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
  76. package/dist/alphalib/types/robots/_instructions-primitives.js +629 -280
  77. package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
  78. package/dist/alphalib/types/robots/ai-chat.d.ts +952 -2189
  79. package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
  80. package/dist/alphalib/types/robots/ai-chat.js +235 -367
  81. package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
  82. package/dist/alphalib/types/robots/assembly-savejson.d.ts +28 -16
  83. package/dist/alphalib/types/robots/assembly-savejson.d.ts.map +1 -1
  84. package/dist/alphalib/types/robots/assembly-savejson.js +2 -11
  85. package/dist/alphalib/types/robots/assembly-savejson.js.map +1 -1
  86. package/dist/alphalib/types/robots/audio-artwork.d.ts +80 -67
  87. package/dist/alphalib/types/robots/audio-artwork.d.ts.map +1 -1
  88. package/dist/alphalib/types/robots/audio-artwork.js +9 -38
  89. package/dist/alphalib/types/robots/audio-artwork.js.map +1 -1
  90. package/dist/alphalib/types/robots/audio-concat.d.ts +94 -81
  91. package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
  92. package/dist/alphalib/types/robots/audio-concat.js +11 -25
  93. package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
  94. package/dist/alphalib/types/robots/audio-encode.d.ts +80 -67
  95. package/dist/alphalib/types/robots/audio-encode.d.ts.map +1 -1
  96. package/dist/alphalib/types/robots/audio-encode.js +13 -43
  97. package/dist/alphalib/types/robots/audio-encode.js.map +1 -1
  98. package/dist/alphalib/types/robots/audio-loop.d.ts +80 -67
  99. package/dist/alphalib/types/robots/audio-loop.d.ts.map +1 -1
  100. package/dist/alphalib/types/robots/audio-loop.js +12 -40
  101. package/dist/alphalib/types/robots/audio-loop.js.map +1 -1
  102. package/dist/alphalib/types/robots/audio-merge.d.ts +94 -81
  103. package/dist/alphalib/types/robots/audio-merge.d.ts.map +1 -1
  104. package/dist/alphalib/types/robots/audio-merge.js +11 -25
  105. package/dist/alphalib/types/robots/audio-merge.js.map +1 -1
  106. package/dist/alphalib/types/robots/audio-split.d.ts +80 -67
  107. package/dist/alphalib/types/robots/audio-split.d.ts.map +1 -1
  108. package/dist/alphalib/types/robots/audio-split.js +15 -45
  109. package/dist/alphalib/types/robots/audio-split.js.map +1 -1
  110. package/dist/alphalib/types/robots/audio-waveform.d.ts +120 -107
  111. package/dist/alphalib/types/robots/audio-waveform.d.ts.map +1 -1
  112. package/dist/alphalib/types/robots/audio-waveform.js +15 -39
  113. package/dist/alphalib/types/robots/audio-waveform.js.map +1 -1
  114. package/dist/alphalib/types/robots/azure-import.d.ts +48 -35
  115. package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
  116. package/dist/alphalib/types/robots/azure-import.js +5 -35
  117. package/dist/alphalib/types/robots/azure-import.js.map +1 -1
  118. package/dist/alphalib/types/robots/azure-store.d.ts +87 -71
  119. package/dist/alphalib/types/robots/azure-store.d.ts.map +1 -1
  120. package/dist/alphalib/types/robots/azure-store.js +11 -50
  121. package/dist/alphalib/types/robots/azure-store.js.map +1 -1
  122. package/dist/alphalib/types/robots/backblaze-import.d.ts +48 -35
  123. package/dist/alphalib/types/robots/backblaze-import.d.ts.map +1 -1
  124. package/dist/alphalib/types/robots/backblaze-import.js +6 -39
  125. package/dist/alphalib/types/robots/backblaze-import.js.map +1 -1
  126. package/dist/alphalib/types/robots/backblaze-store.d.ts +80 -67
  127. package/dist/alphalib/types/robots/backblaze-store.d.ts.map +1 -1
  128. package/dist/alphalib/types/robots/backblaze-store.js +8 -44
  129. package/dist/alphalib/types/robots/backblaze-store.js.map +1 -1
  130. package/dist/alphalib/types/robots/box-import.d.ts +44 -27
  131. package/dist/alphalib/types/robots/box-import.d.ts.map +1 -1
  132. package/dist/alphalib/types/robots/box-import.js +7 -33
  133. package/dist/alphalib/types/robots/box-import.js.map +1 -1
  134. package/dist/alphalib/types/robots/box-store.d.ts +85 -68
  135. package/dist/alphalib/types/robots/box-store.d.ts.map +1 -1
  136. package/dist/alphalib/types/robots/box-store.js +8 -40
  137. package/dist/alphalib/types/robots/box-store.js.map +1 -1
  138. package/dist/alphalib/types/robots/cloudfiles-import.d.ts +48 -35
  139. package/dist/alphalib/types/robots/cloudfiles-import.d.ts.map +1 -1
  140. package/dist/alphalib/types/robots/cloudfiles-import.js +8 -45
  141. package/dist/alphalib/types/robots/cloudfiles-import.js.map +1 -1
  142. package/dist/alphalib/types/robots/cloudfiles-store.d.ts +80 -67
  143. package/dist/alphalib/types/robots/cloudfiles-store.d.ts.map +1 -1
  144. package/dist/alphalib/types/robots/cloudfiles-store.js +5 -36
  145. package/dist/alphalib/types/robots/cloudfiles-store.js.map +1 -1
  146. package/dist/alphalib/types/robots/cloudflare-import.d.ts +48 -35
  147. package/dist/alphalib/types/robots/cloudflare-import.d.ts.map +1 -1
  148. package/dist/alphalib/types/robots/cloudflare-import.js +10 -57
  149. package/dist/alphalib/types/robots/cloudflare-import.js.map +1 -1
  150. package/dist/alphalib/types/robots/cloudflare-store.d.ts +80 -67
  151. package/dist/alphalib/types/robots/cloudflare-store.d.ts.map +1 -1
  152. package/dist/alphalib/types/robots/cloudflare-store.js +11 -54
  153. package/dist/alphalib/types/robots/cloudflare-store.js.map +1 -1
  154. package/dist/alphalib/types/robots/digitalocean-import.d.ts +56 -43
  155. package/dist/alphalib/types/robots/digitalocean-import.d.ts.map +1 -1
  156. package/dist/alphalib/types/robots/digitalocean-import.js +8 -49
  157. package/dist/alphalib/types/robots/digitalocean-import.js.map +1 -1
  158. package/dist/alphalib/types/robots/digitalocean-store.d.ts +88 -75
  159. package/dist/alphalib/types/robots/digitalocean-store.d.ts.map +1 -1
  160. package/dist/alphalib/types/robots/digitalocean-store.js +8 -56
  161. package/dist/alphalib/types/robots/digitalocean-store.js.map +1 -1
  162. package/dist/alphalib/types/robots/document-autorotate.d.ts +80 -67
  163. package/dist/alphalib/types/robots/document-autorotate.d.ts.map +1 -1
  164. package/dist/alphalib/types/robots/document-autorotate.js +5 -32
  165. package/dist/alphalib/types/robots/document-autorotate.js.map +1 -1
  166. package/dist/alphalib/types/robots/document-convert.d.ts +84 -71
  167. package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
  168. package/dist/alphalib/types/robots/document-convert.js +7 -33
  169. package/dist/alphalib/types/robots/document-convert.js.map +1 -1
  170. package/dist/alphalib/types/robots/document-extract.d.ts +80 -67
  171. package/dist/alphalib/types/robots/document-extract.d.ts.map +1 -1
  172. package/dist/alphalib/types/robots/document-extract.js +10 -36
  173. package/dist/alphalib/types/robots/document-extract.js.map +1 -1
  174. package/dist/alphalib/types/robots/document-merge.d.ts +80 -67
  175. package/dist/alphalib/types/robots/document-merge.d.ts.map +1 -1
  176. package/dist/alphalib/types/robots/document-merge.js +4 -25
  177. package/dist/alphalib/types/robots/document-merge.js.map +1 -1
  178. package/dist/alphalib/types/robots/document-ocr.d.ts +80 -67
  179. package/dist/alphalib/types/robots/document-ocr.d.ts.map +1 -1
  180. package/dist/alphalib/types/robots/document-ocr.js +10 -47
  181. package/dist/alphalib/types/robots/document-ocr.js.map +1 -1
  182. package/dist/alphalib/types/robots/document-optimize.d.ts +80 -67
  183. package/dist/alphalib/types/robots/document-optimize.d.ts.map +1 -1
  184. package/dist/alphalib/types/robots/document-optimize.js +7 -31
  185. package/dist/alphalib/types/robots/document-optimize.js.map +1 -1
  186. package/dist/alphalib/types/robots/document-split.d.ts +80 -67
  187. package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
  188. package/dist/alphalib/types/robots/document-split.js +7 -34
  189. package/dist/alphalib/types/robots/document-split.js.map +1 -1
  190. package/dist/alphalib/types/robots/document-thumbs.d.ts +120 -101
  191. package/dist/alphalib/types/robots/document-thumbs.d.ts.map +1 -1
  192. package/dist/alphalib/types/robots/document-thumbs.js +24 -31
  193. package/dist/alphalib/types/robots/document-thumbs.js.map +1 -1
  194. package/dist/alphalib/types/robots/dropbox-import.d.ts +40 -27
  195. package/dist/alphalib/types/robots/dropbox-import.d.ts.map +1 -1
  196. package/dist/alphalib/types/robots/dropbox-import.js +5 -35
  197. package/dist/alphalib/types/robots/dropbox-import.js.map +1 -1
  198. package/dist/alphalib/types/robots/dropbox-store.d.ts +84 -68
  199. package/dist/alphalib/types/robots/dropbox-store.d.ts.map +1 -1
  200. package/dist/alphalib/types/robots/dropbox-store.js +8 -42
  201. package/dist/alphalib/types/robots/dropbox-store.js.map +1 -1
  202. package/dist/alphalib/types/robots/edgly-deliver.d.ts +32 -19
  203. package/dist/alphalib/types/robots/edgly-deliver.d.ts.map +1 -1
  204. package/dist/alphalib/types/robots/edgly-deliver.js +4 -24
  205. package/dist/alphalib/types/robots/edgly-deliver.js.map +1 -1
  206. package/dist/alphalib/types/robots/file-compress.d.ts +80 -67
  207. package/dist/alphalib/types/robots/file-compress.d.ts.map +1 -1
  208. package/dist/alphalib/types/robots/file-compress.js +4 -20
  209. package/dist/alphalib/types/robots/file-compress.js.map +1 -1
  210. package/dist/alphalib/types/robots/file-decompress.d.ts +96 -83
  211. package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
  212. package/dist/alphalib/types/robots/file-decompress.js +10 -41
  213. package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
  214. package/dist/alphalib/types/robots/file-filter.d.ts +99 -87
  215. package/dist/alphalib/types/robots/file-filter.d.ts.map +1 -1
  216. package/dist/alphalib/types/robots/file-filter.js +11 -40
  217. package/dist/alphalib/types/robots/file-filter.js.map +1 -1
  218. package/dist/alphalib/types/robots/file-hash.d.ts +84 -71
  219. package/dist/alphalib/types/robots/file-hash.d.ts.map +1 -1
  220. package/dist/alphalib/types/robots/file-hash.js +12 -43
  221. package/dist/alphalib/types/robots/file-hash.js.map +1 -1
  222. package/dist/alphalib/types/robots/file-preview.d.ts +113 -100
  223. package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
  224. package/dist/alphalib/types/robots/file-preview.js +14 -39
  225. package/dist/alphalib/types/robots/file-preview.js.map +1 -1
  226. package/dist/alphalib/types/robots/file-read.d.ts +80 -67
  227. package/dist/alphalib/types/robots/file-read.d.ts.map +1 -1
  228. package/dist/alphalib/types/robots/file-read.js +5 -26
  229. package/dist/alphalib/types/robots/file-read.js.map +1 -1
  230. package/dist/alphalib/types/robots/file-serve.d.ts +81 -68
  231. package/dist/alphalib/types/robots/file-serve.d.ts.map +1 -1
  232. package/dist/alphalib/types/robots/file-serve.js +4 -21
  233. package/dist/alphalib/types/robots/file-serve.js.map +1 -1
  234. package/dist/alphalib/types/robots/file-verify.d.ts +88 -75
  235. package/dist/alphalib/types/robots/file-verify.d.ts.map +1 -1
  236. package/dist/alphalib/types/robots/file-verify.js +11 -41
  237. package/dist/alphalib/types/robots/file-verify.js.map +1 -1
  238. package/dist/alphalib/types/robots/file-virusscan.d.ts +83 -67
  239. package/dist/alphalib/types/robots/file-virusscan.d.ts.map +1 -1
  240. package/dist/alphalib/types/robots/file-virusscan.js +16 -42
  241. package/dist/alphalib/types/robots/file-virusscan.js.map +1 -1
  242. package/dist/alphalib/types/robots/file-watermark.d.ts +81 -67
  243. package/dist/alphalib/types/robots/file-watermark.d.ts.map +1 -1
  244. package/dist/alphalib/types/robots/file-watermark.js +10 -29
  245. package/dist/alphalib/types/robots/file-watermark.js.map +1 -1
  246. package/dist/alphalib/types/robots/ftp-import.d.ts +40 -27
  247. package/dist/alphalib/types/robots/ftp-import.d.ts.map +1 -1
  248. package/dist/alphalib/types/robots/ftp-import.js +5 -33
  249. package/dist/alphalib/types/robots/ftp-import.js.map +1 -1
  250. package/dist/alphalib/types/robots/ftp-store.d.ts +85 -67
  251. package/dist/alphalib/types/robots/ftp-store.d.ts.map +1 -1
  252. package/dist/alphalib/types/robots/ftp-store.js +7 -34
  253. package/dist/alphalib/types/robots/ftp-store.js.map +1 -1
  254. package/dist/alphalib/types/robots/google-import.d.ts +48 -35
  255. package/dist/alphalib/types/robots/google-import.d.ts.map +1 -1
  256. package/dist/alphalib/types/robots/google-import.js +10 -43
  257. package/dist/alphalib/types/robots/google-import.js.map +1 -1
  258. package/dist/alphalib/types/robots/google-store.d.ts +80 -67
  259. package/dist/alphalib/types/robots/google-store.d.ts.map +1 -1
  260. package/dist/alphalib/types/robots/google-store.js +10 -41
  261. package/dist/alphalib/types/robots/google-store.js.map +1 -1
  262. package/dist/alphalib/types/robots/html-convert.d.ts +107 -89
  263. package/dist/alphalib/types/robots/html-convert.d.ts.map +1 -1
  264. package/dist/alphalib/types/robots/html-convert.js +6 -22
  265. package/dist/alphalib/types/robots/html-convert.js.map +1 -1
  266. package/dist/alphalib/types/robots/http-import.d.ts +76 -63
  267. package/dist/alphalib/types/robots/http-import.d.ts.map +1 -1
  268. package/dist/alphalib/types/robots/http-import.js +14 -19
  269. package/dist/alphalib/types/robots/http-import.js.map +1 -1
  270. package/dist/alphalib/types/robots/http-request.d.ts +538 -0
  271. package/dist/alphalib/types/robots/http-request.d.ts.map +1 -0
  272. package/dist/alphalib/types/robots/http-request.js +162 -0
  273. package/dist/alphalib/types/robots/http-request.js.map +1 -0
  274. package/dist/alphalib/types/robots/image-bgremove.d.ts +80 -67
  275. package/dist/alphalib/types/robots/image-bgremove.d.ts.map +1 -1
  276. package/dist/alphalib/types/robots/image-bgremove.js +6 -33
  277. package/dist/alphalib/types/robots/image-bgremove.js.map +1 -1
  278. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts +92 -79
  279. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts.map +1 -1
  280. package/dist/alphalib/types/robots/image-copyrightdetect.js +9 -33
  281. package/dist/alphalib/types/robots/image-copyrightdetect.js.map +1 -1
  282. package/dist/alphalib/types/robots/image-describe.d.ts +80 -67
  283. package/dist/alphalib/types/robots/image-describe.d.ts.map +1 -1
  284. package/dist/alphalib/types/robots/image-describe.js +8 -37
  285. package/dist/alphalib/types/robots/image-describe.js.map +1 -1
  286. package/dist/alphalib/types/robots/image-enhance.d.ts +80 -67
  287. package/dist/alphalib/types/robots/image-enhance.d.ts.map +1 -1
  288. package/dist/alphalib/types/robots/image-enhance.js +7 -31
  289. package/dist/alphalib/types/robots/image-enhance.js.map +1 -1
  290. package/dist/alphalib/types/robots/image-facedetect.d.ts +88 -75
  291. package/dist/alphalib/types/robots/image-facedetect.d.ts.map +1 -1
  292. package/dist/alphalib/types/robots/image-facedetect.js +16 -44
  293. package/dist/alphalib/types/robots/image-facedetect.js.map +1 -1
  294. package/dist/alphalib/types/robots/image-generate.d.ts +96 -86
  295. package/dist/alphalib/types/robots/image-generate.d.ts.map +1 -1
  296. package/dist/alphalib/types/robots/image-generate.js +20 -25
  297. package/dist/alphalib/types/robots/image-generate.js.map +1 -1
  298. package/dist/alphalib/types/robots/image-merge.d.ts +96 -83
  299. package/dist/alphalib/types/robots/image-merge.d.ts.map +1 -1
  300. package/dist/alphalib/types/robots/image-merge.js +9 -40
  301. package/dist/alphalib/types/robots/image-merge.js.map +1 -1
  302. package/dist/alphalib/types/robots/image-ocr.d.ts +80 -67
  303. package/dist/alphalib/types/robots/image-ocr.d.ts.map +1 -1
  304. package/dist/alphalib/types/robots/image-ocr.js +11 -47
  305. package/dist/alphalib/types/robots/image-ocr.js.map +1 -1
  306. package/dist/alphalib/types/robots/image-optimize.d.ts +88 -75
  307. package/dist/alphalib/types/robots/image-optimize.d.ts.map +1 -1
  308. package/dist/alphalib/types/robots/image-optimize.js +6 -32
  309. package/dist/alphalib/types/robots/image-optimize.js.map +1 -1
  310. package/dist/alphalib/types/robots/image-resize.d.ts +217 -112
  311. package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
  312. package/dist/alphalib/types/robots/image-resize.js +15 -42
  313. package/dist/alphalib/types/robots/image-resize.js.map +1 -1
  314. package/dist/alphalib/types/robots/image-upscale.d.ts +97 -81
  315. package/dist/alphalib/types/robots/image-upscale.d.ts.map +1 -1
  316. package/dist/alphalib/types/robots/image-upscale.js +23 -42
  317. package/dist/alphalib/types/robots/image-upscale.js.map +1 -1
  318. package/dist/alphalib/types/robots/mega-import.d.ts +48 -35
  319. package/dist/alphalib/types/robots/mega-import.d.ts.map +1 -1
  320. package/dist/alphalib/types/robots/mega-import.js +12 -59
  321. package/dist/alphalib/types/robots/mega-import.js.map +1 -1
  322. package/dist/alphalib/types/robots/mega-store.d.ts +80 -67
  323. package/dist/alphalib/types/robots/mega-store.d.ts.map +1 -1
  324. package/dist/alphalib/types/robots/mega-store.js +14 -60
  325. package/dist/alphalib/types/robots/mega-store.js.map +1 -1
  326. package/dist/alphalib/types/robots/meta-read.d.ts +30 -16
  327. package/dist/alphalib/types/robots/meta-read.d.ts.map +1 -1
  328. package/dist/alphalib/types/robots/meta-read.js +4 -20
  329. package/dist/alphalib/types/robots/meta-read.js.map +1 -1
  330. package/dist/alphalib/types/robots/meta-write.d.ts +80 -67
  331. package/dist/alphalib/types/robots/meta-write.d.ts.map +1 -1
  332. package/dist/alphalib/types/robots/meta-write.js +9 -32
  333. package/dist/alphalib/types/robots/meta-write.js.map +1 -1
  334. package/dist/alphalib/types/robots/minio-import.d.ts +48 -35
  335. package/dist/alphalib/types/robots/minio-import.d.ts.map +1 -1
  336. package/dist/alphalib/types/robots/minio-import.js +9 -60
  337. package/dist/alphalib/types/robots/minio-import.js.map +1 -1
  338. package/dist/alphalib/types/robots/minio-store.d.ts +80 -67
  339. package/dist/alphalib/types/robots/minio-store.d.ts.map +1 -1
  340. package/dist/alphalib/types/robots/minio-store.js +9 -50
  341. package/dist/alphalib/types/robots/minio-store.js.map +1 -1
  342. package/dist/alphalib/types/robots/progress-simulate.d.ts +34 -28
  343. package/dist/alphalib/types/robots/progress-simulate.d.ts.map +1 -1
  344. package/dist/alphalib/types/robots/progress-simulate.js +8 -28
  345. package/dist/alphalib/types/robots/progress-simulate.js.map +1 -1
  346. package/dist/alphalib/types/robots/s3-import.d.ts +48 -35
  347. package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
  348. package/dist/alphalib/types/robots/s3-import.js +7 -38
  349. package/dist/alphalib/types/robots/s3-import.js.map +1 -1
  350. package/dist/alphalib/types/robots/s3-store.d.ts +84 -68
  351. package/dist/alphalib/types/robots/s3-store.d.ts.map +1 -1
  352. package/dist/alphalib/types/robots/s3-store.js +14 -44
  353. package/dist/alphalib/types/robots/s3-store.js.map +1 -1
  354. package/dist/alphalib/types/robots/script-run.d.ts +83 -67
  355. package/dist/alphalib/types/robots/script-run.d.ts.map +1 -1
  356. package/dist/alphalib/types/robots/script-run.js +9 -27
  357. package/dist/alphalib/types/robots/script-run.js.map +1 -1
  358. package/dist/alphalib/types/robots/sftp-import.d.ts +51 -35
  359. package/dist/alphalib/types/robots/sftp-import.d.ts.map +1 -1
  360. package/dist/alphalib/types/robots/sftp-import.js +7 -36
  361. package/dist/alphalib/types/robots/sftp-import.js.map +1 -1
  362. package/dist/alphalib/types/robots/sftp-store.d.ts +83 -67
  363. package/dist/alphalib/types/robots/sftp-store.d.ts.map +1 -1
  364. package/dist/alphalib/types/robots/sftp-store.js +9 -41
  365. package/dist/alphalib/types/robots/sftp-store.js.map +1 -1
  366. package/dist/alphalib/types/robots/speech-transcribe.d.ts +102 -85
  367. package/dist/alphalib/types/robots/speech-transcribe.d.ts.map +1 -1
  368. package/dist/alphalib/types/robots/speech-transcribe.js +23 -44
  369. package/dist/alphalib/types/robots/speech-transcribe.js.map +1 -1
  370. package/dist/alphalib/types/robots/supabase-import.d.ts +48 -35
  371. package/dist/alphalib/types/robots/supabase-import.d.ts.map +1 -1
  372. package/dist/alphalib/types/robots/supabase-import.js +12 -59
  373. package/dist/alphalib/types/robots/supabase-import.js.map +1 -1
  374. package/dist/alphalib/types/robots/supabase-store.d.ts +80 -79
  375. package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
  376. package/dist/alphalib/types/robots/supabase-store.js +12 -56
  377. package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
  378. package/dist/alphalib/types/robots/swift-import.d.ts +48 -47
  379. package/dist/alphalib/types/robots/swift-import.d.ts.map +1 -1
  380. package/dist/alphalib/types/robots/swift-import.js +14 -55
  381. package/dist/alphalib/types/robots/swift-import.js.map +1 -1
  382. package/dist/alphalib/types/robots/swift-store.d.ts +80 -79
  383. package/dist/alphalib/types/robots/swift-store.d.ts.map +1 -1
  384. package/dist/alphalib/types/robots/swift-store.js +14 -62
  385. package/dist/alphalib/types/robots/swift-store.js.map +1 -1
  386. package/dist/alphalib/types/robots/text-speak.d.ts +80 -67
  387. package/dist/alphalib/types/robots/text-speak.d.ts.map +1 -1
  388. package/dist/alphalib/types/robots/text-speak.js +11 -37
  389. package/dist/alphalib/types/robots/text-speak.js.map +1 -1
  390. package/dist/alphalib/types/robots/text-translate.d.ts +92 -79
  391. package/dist/alphalib/types/robots/text-translate.d.ts.map +1 -1
  392. package/dist/alphalib/types/robots/text-translate.js +9 -36
  393. package/dist/alphalib/types/robots/text-translate.js.map +1 -1
  394. package/dist/alphalib/types/robots/tigris-import.d.ts +48 -35
  395. package/dist/alphalib/types/robots/tigris-import.d.ts.map +1 -1
  396. package/dist/alphalib/types/robots/tigris-import.js +9 -60
  397. package/dist/alphalib/types/robots/tigris-import.js.map +1 -1
  398. package/dist/alphalib/types/robots/tigris-store.d.ts +80 -67
  399. package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
  400. package/dist/alphalib/types/robots/tigris-store.js +7 -48
  401. package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
  402. package/dist/alphalib/types/robots/tlcdn-deliver.d.ts +32 -19
  403. package/dist/alphalib/types/robots/tlcdn-deliver.d.ts.map +1 -1
  404. package/dist/alphalib/types/robots/tlcdn-deliver.js +4 -25
  405. package/dist/alphalib/types/robots/tlcdn-deliver.js.map +1 -1
  406. package/dist/alphalib/types/robots/transloadit-import.d.ts +58 -45
  407. package/dist/alphalib/types/robots/transloadit-import.d.ts.map +1 -1
  408. package/dist/alphalib/types/robots/transloadit-import.js +17 -21
  409. package/dist/alphalib/types/robots/transloadit-import.js.map +1 -1
  410. package/dist/alphalib/types/robots/transloadit-store.d.ts +70 -57
  411. package/dist/alphalib/types/robots/transloadit-store.d.ts.map +1 -1
  412. package/dist/alphalib/types/robots/transloadit-store.js +14 -6
  413. package/dist/alphalib/types/robots/transloadit-store.js.map +1 -1
  414. package/dist/alphalib/types/robots/tus-store.d.ts +84 -71
  415. package/dist/alphalib/types/robots/tus-store.d.ts.map +1 -1
  416. package/dist/alphalib/types/robots/tus-store.js +8 -37
  417. package/dist/alphalib/types/robots/tus-store.js.map +1 -1
  418. package/dist/alphalib/types/robots/upload-handle.d.ts +32 -19
  419. package/dist/alphalib/types/robots/upload-handle.d.ts.map +1 -1
  420. package/dist/alphalib/types/robots/upload-handle.js +4 -19
  421. package/dist/alphalib/types/robots/upload-handle.js.map +1 -1
  422. package/dist/alphalib/types/robots/video-adaptive.d.ts +112 -99
  423. package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
  424. package/dist/alphalib/types/robots/video-adaptive.js +4 -26
  425. package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
  426. package/dist/alphalib/types/robots/video-artwork.d.ts +80 -67
  427. package/dist/alphalib/types/robots/video-artwork.d.ts.map +1 -1
  428. package/dist/alphalib/types/robots/video-artwork.js +7 -32
  429. package/dist/alphalib/types/robots/video-artwork.js.map +1 -1
  430. package/dist/alphalib/types/robots/video-concat.d.ts +104 -91
  431. package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
  432. package/dist/alphalib/types/robots/video-concat.js +6 -27
  433. package/dist/alphalib/types/robots/video-concat.js.map +1 -1
  434. package/dist/alphalib/types/robots/video-encode.d.ts +121 -103
  435. package/dist/alphalib/types/robots/video-encode.d.ts.map +1 -1
  436. package/dist/alphalib/types/robots/video-encode.js +13 -38
  437. package/dist/alphalib/types/robots/video-encode.js.map +1 -1
  438. package/dist/alphalib/types/robots/video-generate.d.ts +96 -86
  439. package/dist/alphalib/types/robots/video-generate.d.ts.map +1 -1
  440. package/dist/alphalib/types/robots/video-generate.js +11 -18
  441. package/dist/alphalib/types/robots/video-generate.js.map +1 -1
  442. package/dist/alphalib/types/robots/video-merge.d.ts +135 -119
  443. package/dist/alphalib/types/robots/video-merge.d.ts.map +1 -1
  444. package/dist/alphalib/types/robots/video-merge.js +12 -32
  445. package/dist/alphalib/types/robots/video-merge.js.map +1 -1
  446. package/dist/alphalib/types/robots/video-ondemand.d.ts +156 -139
  447. package/dist/alphalib/types/robots/video-ondemand.d.ts.map +1 -1
  448. package/dist/alphalib/types/robots/video-ondemand.js +11 -27
  449. package/dist/alphalib/types/robots/video-ondemand.js.map +1 -1
  450. package/dist/alphalib/types/robots/video-split.d.ts +104 -91
  451. package/dist/alphalib/types/robots/video-split.d.ts.map +1 -1
  452. package/dist/alphalib/types/robots/video-split.js +11 -39
  453. package/dist/alphalib/types/robots/video-split.js.map +1 -1
  454. package/dist/alphalib/types/robots/video-subtitle.d.ts +104 -91
  455. package/dist/alphalib/types/robots/video-subtitle.d.ts.map +1 -1
  456. package/dist/alphalib/types/robots/video-subtitle.js +7 -30
  457. package/dist/alphalib/types/robots/video-subtitle.js.map +1 -1
  458. package/dist/alphalib/types/robots/video-thumbs.d.ts +112 -95
  459. package/dist/alphalib/types/robots/video-thumbs.d.ts.map +1 -1
  460. package/dist/alphalib/types/robots/video-thumbs.js +46 -53
  461. package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
  462. package/dist/alphalib/types/robots/vimeo-import.d.ts +30 -17
  463. package/dist/alphalib/types/robots/vimeo-import.d.ts.map +1 -1
  464. package/dist/alphalib/types/robots/vimeo-import.js +7 -17
  465. package/dist/alphalib/types/robots/vimeo-import.js.map +1 -1
  466. package/dist/alphalib/types/robots/vimeo-store.d.ts +83 -67
  467. package/dist/alphalib/types/robots/vimeo-store.d.ts.map +1 -1
  468. package/dist/alphalib/types/robots/vimeo-store.js +11 -37
  469. package/dist/alphalib/types/robots/vimeo-store.js.map +1 -1
  470. package/dist/alphalib/types/robots/wasabi-import.d.ts +48 -35
  471. package/dist/alphalib/types/robots/wasabi-import.d.ts.map +1 -1
  472. package/dist/alphalib/types/robots/wasabi-import.js +9 -56
  473. package/dist/alphalib/types/robots/wasabi-import.js.map +1 -1
  474. package/dist/alphalib/types/robots/wasabi-store.d.ts +80 -67
  475. package/dist/alphalib/types/robots/wasabi-store.d.ts.map +1 -1
  476. package/dist/alphalib/types/robots/wasabi-store.js +10 -52
  477. package/dist/alphalib/types/robots/wasabi-store.js.map +1 -1
  478. package/dist/alphalib/types/robots/youtube-store.d.ts +98 -85
  479. package/dist/alphalib/types/robots/youtube-store.d.ts.map +1 -1
  480. package/dist/alphalib/types/robots/youtube-store.js +42 -63
  481. package/dist/alphalib/types/robots/youtube-store.js.map +1 -1
  482. package/dist/alphalib/types/stackVersions.d.ts +40 -1
  483. package/dist/alphalib/types/stackVersions.d.ts.map +1 -1
  484. package/dist/alphalib/types/stackVersions.js +25 -3
  485. package/dist/alphalib/types/stackVersions.js.map +1 -1
  486. package/dist/alphalib/types/storageAsset.d.ts +55 -23
  487. package/dist/alphalib/types/storageAsset.d.ts.map +1 -1
  488. package/dist/alphalib/types/storageAsset.js +33 -9
  489. package/dist/alphalib/types/storageAsset.js.map +1 -1
  490. package/dist/alphalib/types/template.d.ts +16 -16
  491. package/dist/alphalib/types/templateCredential.d.ts +2 -2
  492. package/dist/alphalib/types/utility.d.ts +22 -0
  493. package/dist/alphalib/types/utility.d.ts.map +1 -0
  494. package/dist/alphalib/types/utility.js +2 -0
  495. package/dist/alphalib/types/utility.js.map +1 -0
  496. package/dist/cli/commands/storage.d.ts +1 -0
  497. package/dist/cli/commands/storage.d.ts.map +1 -1
  498. package/dist/cli/commands/storage.js +27 -2
  499. package/dist/cli/commands/storage.js.map +1 -1
  500. package/dist/cli/semanticIntents/imageGenerate.d.ts +2 -2
  501. package/dist/cli/semanticIntents/imageGenerate.js +4 -4
  502. package/dist/cli/semanticIntents/imageGenerate.js.map +1 -1
  503. package/dist/cli/storageReceipts.d.ts.map +1 -1
  504. package/dist/cli/storageReceipts.js +4 -1
  505. package/dist/cli/storageReceipts.js.map +1 -1
  506. package/dist/storageImage.d.ts +6 -3
  507. package/dist/storageImage.d.ts.map +1 -1
  508. package/dist/storageImage.js +13 -0
  509. package/dist/storageImage.js.map +1 -1
  510. package/package.json +1 -2
  511. package/src/ApiError.ts +11 -4
  512. package/src/Transloadit.ts +24 -5
  513. package/src/alphalib/aiMessages.ts +554 -0
  514. package/src/alphalib/assembly-linter.ts +9 -2
  515. package/src/alphalib/englishList.ts +11 -0
  516. package/src/alphalib/errors.ts +159 -13
  517. package/src/alphalib/imagemagickDensity.ts +2 -1
  518. package/src/alphalib/lib/zodInputSemantics.ts +114 -0
  519. package/src/alphalib/object.ts +178 -3
  520. package/src/alphalib/stepParsing.ts +10 -2
  521. package/src/alphalib/types/apiParameterDescription.ts +41 -0
  522. package/src/alphalib/types/assemblyStatus.ts +121 -83
  523. package/src/alphalib/types/errorReason.ts +14 -0
  524. package/src/alphalib/types/file.ts +18 -0
  525. package/src/alphalib/types/fileHash.ts +10 -0
  526. package/src/alphalib/types/responseErrors/HttpImportRobot.ts +22 -0
  527. package/src/alphalib/types/robots/_ai-models.ts +91 -0
  528. package/src/alphalib/types/robots/_index.ts +14 -0
  529. package/src/alphalib/types/robots/_instructions-primitives.ts +841 -308
  530. package/src/alphalib/types/robots/ai-chat.ts +358 -459
  531. package/src/alphalib/types/robots/assembly-savejson.ts +2 -11
  532. package/src/alphalib/types/robots/audio-artwork.ts +35 -61
  533. package/src/alphalib/types/robots/audio-concat.ts +17 -25
  534. package/src/alphalib/types/robots/audio-encode.ts +35 -65
  535. package/src/alphalib/types/robots/audio-loop.ts +34 -61
  536. package/src/alphalib/types/robots/audio-merge.ts +17 -25
  537. package/src/alphalib/types/robots/audio-split.ts +37 -67
  538. package/src/alphalib/types/robots/audio-waveform.ts +42 -65
  539. package/src/alphalib/types/robots/azure-import.ts +26 -57
  540. package/src/alphalib/types/robots/azure-store.ts +48 -72
  541. package/src/alphalib/types/robots/backblaze-import.ts +30 -63
  542. package/src/alphalib/types/robots/backblaze-store.ts +37 -66
  543. package/src/alphalib/types/robots/box-import.ts +32 -55
  544. package/src/alphalib/types/robots/box-store.ts +40 -63
  545. package/src/alphalib/types/robots/cloudfiles-import.ts +34 -70
  546. package/src/alphalib/types/robots/cloudfiles-store.ts +28 -59
  547. package/src/alphalib/types/robots/cloudflare-import.ts +37 -83
  548. package/src/alphalib/types/robots/cloudflare-store.ts +37 -77
  549. package/src/alphalib/types/robots/digitalocean-import.ts +35 -75
  550. package/src/alphalib/types/robots/digitalocean-store.ts +35 -79
  551. package/src/alphalib/types/robots/document-autorotate.ts +36 -58
  552. package/src/alphalib/types/robots/document-convert.ts +37 -59
  553. package/src/alphalib/types/robots/document-extract.ts +45 -62
  554. package/src/alphalib/types/robots/document-merge.ts +25 -47
  555. package/src/alphalib/types/robots/document-ocr.ts +32 -70
  556. package/src/alphalib/types/robots/document-optimize.ts +38 -57
  557. package/src/alphalib/types/robots/document-split.ts +33 -56
  558. package/src/alphalib/types/robots/document-thumbs.ts +66 -67
  559. package/src/alphalib/types/robots/dropbox-import.ts +27 -57
  560. package/src/alphalib/types/robots/dropbox-store.ts +39 -65
  561. package/src/alphalib/types/robots/edgly-deliver.ts +26 -49
  562. package/src/alphalib/types/robots/file-compress.ts +31 -45
  563. package/src/alphalib/types/robots/file-decompress.ts +41 -68
  564. package/src/alphalib/types/robots/file-filter.ts +36 -65
  565. package/src/alphalib/types/robots/file-hash.ts +37 -64
  566. package/src/alphalib/types/robots/file-preview.ts +39 -65
  567. package/src/alphalib/types/robots/file-read.ts +33 -50
  568. package/src/alphalib/types/robots/file-serve.ts +32 -46
  569. package/src/alphalib/types/robots/file-verify.ts +37 -63
  570. package/src/alphalib/types/robots/file-virusscan.ts +49 -67
  571. package/src/alphalib/types/robots/file-watermark.ts +35 -54
  572. package/src/alphalib/types/robots/ftp-import.ts +26 -54
  573. package/src/alphalib/types/robots/ftp-store.ts +44 -63
  574. package/src/alphalib/types/robots/google-import.ts +32 -66
  575. package/src/alphalib/types/robots/google-store.ts +37 -63
  576. package/src/alphalib/types/robots/html-convert.ts +38 -49
  577. package/src/alphalib/types/robots/http-import.ts +21 -19
  578. package/src/alphalib/types/robots/http-request.ts +196 -0
  579. package/src/alphalib/types/robots/image-bgremove.ts +28 -55
  580. package/src/alphalib/types/robots/image-copyrightdetect.ts +38 -56
  581. package/src/alphalib/types/robots/image-describe.ts +31 -60
  582. package/src/alphalib/types/robots/image-enhance.ts +30 -56
  583. package/src/alphalib/types/robots/image-facedetect.ts +43 -71
  584. package/src/alphalib/types/robots/image-generate.ts +32 -25
  585. package/src/alphalib/types/robots/image-merge.ts +34 -65
  586. package/src/alphalib/types/robots/image-ocr.ts +33 -69
  587. package/src/alphalib/types/robots/image-optimize.ts +28 -54
  588. package/src/alphalib/types/robots/image-resize.ts +72 -96
  589. package/src/alphalib/types/robots/image-upscale.ts +52 -64
  590. package/src/alphalib/types/robots/mega-import.ts +36 -84
  591. package/src/alphalib/types/robots/mega-store.ts +44 -81
  592. package/src/alphalib/types/robots/meta-read.ts +21 -36
  593. package/src/alphalib/types/robots/meta-write.ts +35 -53
  594. package/src/alphalib/types/robots/minio-import.ts +34 -86
  595. package/src/alphalib/types/robots/minio-store.ts +37 -72
  596. package/src/alphalib/types/robots/progress-simulate.ts +14 -28
  597. package/src/alphalib/types/robots/s3-import.ts +32 -63
  598. package/src/alphalib/types/robots/s3-store.ts +53 -74
  599. package/src/alphalib/types/robots/script-run.ts +44 -55
  600. package/src/alphalib/types/robots/sftp-import.ts +34 -61
  601. package/src/alphalib/types/robots/sftp-store.ts +42 -65
  602. package/src/alphalib/types/robots/speech-transcribe.ts +53 -71
  603. package/src/alphalib/types/robots/supabase-import.ts +37 -84
  604. package/src/alphalib/types/robots/supabase-store.ts +41 -78
  605. package/src/alphalib/types/robots/swift-import.ts +38 -80
  606. package/src/alphalib/types/robots/swift-store.ts +44 -84
  607. package/src/alphalib/types/robots/text-speak.ts +36 -62
  608. package/src/alphalib/types/robots/text-translate.ts +35 -62
  609. package/src/alphalib/types/robots/tigris-import.ts +34 -86
  610. package/src/alphalib/types/robots/tigris-store.ts +35 -70
  611. package/src/alphalib/types/robots/tlcdn-deliver.ts +23 -47
  612. package/src/alphalib/types/robots/transloadit-import.ts +24 -29
  613. package/src/alphalib/types/robots/transloadit-store.ts +20 -7
  614. package/src/alphalib/types/robots/tus-store.ts +34 -58
  615. package/src/alphalib/types/robots/upload-handle.ts +23 -41
  616. package/src/alphalib/types/robots/video-adaptive.ts +28 -51
  617. package/src/alphalib/types/robots/video-artwork.ts +28 -54
  618. package/src/alphalib/types/robots/video-concat.ts +29 -52
  619. package/src/alphalib/types/robots/video-encode.ts +39 -62
  620. package/src/alphalib/types/robots/video-generate.ts +20 -18
  621. package/src/alphalib/types/robots/video-merge.ts +36 -55
  622. package/src/alphalib/types/robots/video-ondemand.ts +48 -62
  623. package/src/alphalib/types/robots/video-split.ts +32 -61
  624. package/src/alphalib/types/robots/video-subtitle.ts +30 -52
  625. package/src/alphalib/types/robots/video-thumbs.ts +74 -78
  626. package/src/alphalib/types/robots/vimeo-import.ts +12 -17
  627. package/src/alphalib/types/robots/vimeo-store.ts +46 -65
  628. package/src/alphalib/types/robots/wasabi-import.ts +33 -81
  629. package/src/alphalib/types/robots/wasabi-store.ts +38 -74
  630. package/src/alphalib/types/robots/youtube-store.ts +81 -91
  631. package/src/alphalib/types/stackVersions.ts +26 -3
  632. package/src/alphalib/types/storageAsset.ts +85 -29
  633. package/src/alphalib/types/utility.ts +52 -0
  634. package/src/cli/commands/storage.ts +28 -2
  635. package/src/cli/semanticIntents/imageGenerate.ts +4 -4
  636. package/src/cli/storageReceipts.ts +4 -1
  637. package/src/storageImage.ts +18 -3
@@ -0,0 +1,554 @@
1
+ import { z } from 'zod'
2
+
3
+ import { isRecord } from './object.ts'
4
+
5
+ export type JsonValue =
6
+ | string
7
+ | number
8
+ | boolean
9
+ | null
10
+ | JsonValue[]
11
+ | { [key: string]: JsonValue }
12
+
13
+ export const jsonValueSchema: z.ZodType<JsonValue> = z.lazy(() => jsonValueUnionSchema)
14
+ const jsonValueUnionSchema = z.union([
15
+ z.string(),
16
+ z.number().finite(),
17
+ z.boolean(),
18
+ z.null(),
19
+ z.array(jsonValueSchema),
20
+ z.record(jsonValueSchema),
21
+ ])
22
+
23
+ // Define provider options schema to match the AI SDK.
24
+ const providerMetadataSchema = z.record(z.record(jsonValueSchema)).optional()
25
+
26
+ interface LegacyJsonFrame {
27
+ source: object
28
+ copy: Record<string, unknown> | unknown[]
29
+ entries: Iterator<[string | number, unknown]>
30
+ depth: number
31
+ values: number
32
+ }
33
+
34
+ function* legacyRecordEntries(value: Record<string, unknown>): Generator<[string, unknown]> {
35
+ // Zod records also validate inherited enumerable properties, unlike JSON.stringify.
36
+ for (const key in value) {
37
+ yield [key, value[key]]
38
+ }
39
+ }
40
+
41
+ function legacyJsonFrame(value: unknown): LegacyJsonFrame | undefined {
42
+ if (Array.isArray(value)) {
43
+ // Zod arrays consume the iterator, ignoring non-element properties.
44
+ const copy: unknown[] = [...value]
45
+ return { source: value, copy, entries: copy.entries(), depth: 1, values: 1 }
46
+ }
47
+ if (isRecord(value) && z.getParsedType(value) === 'object') {
48
+ return { source: value, copy: {}, entries: legacyRecordEntries(value), depth: 1, values: 1 }
49
+ }
50
+ // Preserve non-JSON objects (Date, Map, promises, etc.) for Zod to reject, not coerce.
51
+ return undefined
52
+ }
53
+
54
+ function snapshotLegacyJson(
55
+ result: unknown,
56
+ limits?: { depth: number; values: number },
57
+ ): { value: unknown } | undefined {
58
+ const root = legacyJsonFrame(result)
59
+ if (root === undefined) {
60
+ return { value: result }
61
+ }
62
+
63
+ const ancestors = new WeakSet([root.source])
64
+ const snapshots = new WeakMap<object, LegacyJsonFrame>([[root.source, root]])
65
+ const stack = [root]
66
+ // An iterative snapshot avoids both recursive cycle checking and reading getters twice
67
+ // (once in a preflight walk, then again with potentially different values inside Zod).
68
+ while (stack.length > 0) {
69
+ const frame = stack[stack.length - 1]
70
+ if (
71
+ limits !== undefined &&
72
+ (stack.length + frame.depth - 1 > limits.depth || frame.values > limits.values)
73
+ ) {
74
+ return undefined
75
+ }
76
+ const entry = frame.entries.next()
77
+ if (entry.done) {
78
+ ancestors.delete(frame.source)
79
+ stack.pop()
80
+ const parent = stack[stack.length - 1]
81
+ if (parent !== undefined) {
82
+ parent.depth = Math.max(parent.depth, frame.depth + 1)
83
+ parent.values += frame.values
84
+ }
85
+ continue
86
+ }
87
+ const [key, value] = entry.value
88
+ if (typeof value === 'object' && value !== null && ancestors.has(value)) {
89
+ return undefined
90
+ }
91
+ // Preserve graph sharing so a small DAG cannot expand exponentially before Zod runs.
92
+ // A shared object's getters deliberately contribute one stable snapshot, not one per path.
93
+ const existing = typeof value === 'object' && value !== null ? snapshots.get(value) : undefined
94
+ const child = existing === undefined ? legacyJsonFrame(value) : undefined
95
+ // Defining a data property preserves a literal __proto__ key for Zod's own handling.
96
+ Object.defineProperty(frame.copy, key, {
97
+ configurable: true,
98
+ enumerable: true,
99
+ value: existing?.copy ?? child?.copy ?? value,
100
+ writable: true,
101
+ })
102
+ if (child !== undefined) {
103
+ snapshots.set(child.source, child)
104
+ ancestors.add(child.source)
105
+ stack.push(child)
106
+ } else {
107
+ frame.depth = Math.max(frame.depth, (existing?.depth ?? 0) + 1)
108
+ frame.values += existing?.values ?? 1
109
+ }
110
+ }
111
+ return { value: root.copy }
112
+ }
113
+
114
+ /** Normalizes legacy JSON/text tool results at both the runtime and portable Robot boundaries. */
115
+ function legacyJsonToolOutput(result: unknown, isError: boolean): unknown {
116
+ try {
117
+ const snapshot = snapshotLegacyJson(result)
118
+ const parsed = snapshot === undefined ? undefined : jsonValueSchema.safeParse(snapshot.value)
119
+ if (parsed?.success) {
120
+ return { type: isError ? 'error-json' : 'json', value: parsed.data }
121
+ }
122
+ } catch {
123
+ // Accessors can throw; deeply nested acyclic input can still exceed Zod's stack.
124
+ // Keep the existing text fallback without using a stack overflow to detect cycles.
125
+ }
126
+ return { type: isError ? 'error-text' : 'text', value: stringifyLegacyToolResult(result) }
127
+ }
128
+
129
+ function withCurrentProviderOptions(value: Record<string, unknown>): Record<string, unknown> {
130
+ const { experimental_providerMetadata, providerOptions: currentProviderOptions, ...rest } = value
131
+ const providerOptions = currentProviderOptions ?? experimental_providerMetadata
132
+ return providerOptions === undefined ? rest : { ...rest, providerOptions }
133
+ }
134
+
135
+ function legacyToolContentProviderOptions(
136
+ value: unknown,
137
+ ): { providerOptions?: z.output<typeof providerMetadataSchema> } | undefined {
138
+ if (value === undefined) return {}
139
+ try {
140
+ // Bound Zod's recursive work, including repeated DAG paths, before validating metadata.
141
+ // Return the validated snapshot so changing getters cannot reintroduce cycles afterward.
142
+ const snapshot = snapshotLegacyJson(value, { depth: 128, values: 10_000 })
143
+ if (snapshot === undefined) return undefined
144
+ const parsed = providerMetadataSchema.safeParse(snapshot.value)
145
+ return parsed.success ? { providerOptions: parsed.data } : undefined
146
+ } catch {
147
+ // Unreadable metadata follows the same legacy result fallback as invalid content.
148
+ return undefined
149
+ }
150
+ }
151
+
152
+ function normalizeLegacyToolContentPart(part: unknown): unknown | undefined {
153
+ if (!isRecord(part)) return undefined
154
+
155
+ const normalized = withCurrentProviderOptions(part)
156
+ const providerOptions = legacyToolContentProviderOptions(normalized.providerOptions)
157
+ if (providerOptions === undefined) return undefined
158
+ if (normalized.type === 'text' && typeof normalized.text === 'string') {
159
+ return { type: 'text', text: normalized.text, ...providerOptions }
160
+ }
161
+ if (normalized.type === 'image' && typeof normalized.data === 'string') {
162
+ return {
163
+ type: 'image-data',
164
+ data: normalized.data,
165
+ mediaType: typeof normalized.mimeType === 'string' ? normalized.mimeType : 'image',
166
+ ...providerOptions,
167
+ }
168
+ }
169
+ if (
170
+ normalized.type === 'media' &&
171
+ typeof normalized.data === 'string' &&
172
+ typeof normalized.mediaType === 'string'
173
+ ) {
174
+ return {
175
+ type: 'file-data',
176
+ data: normalized.data,
177
+ mediaType: normalized.mediaType,
178
+ ...providerOptions,
179
+ }
180
+ }
181
+ return undefined
182
+ }
183
+
184
+ function legacyToolOutput(
185
+ result: unknown,
186
+ isError: boolean,
187
+ experimentalContent: unknown,
188
+ ): unknown {
189
+ if (!isError && Array.isArray(experimentalContent)) {
190
+ const content = experimentalContent.flatMap((part): unknown[] => {
191
+ const normalized = normalizeLegacyToolContentPart(part)
192
+ return normalized === undefined ? [] : [normalized]
193
+ })
194
+ if (content.length === experimentalContent.length) {
195
+ return { type: 'content', value: content }
196
+ }
197
+ }
198
+
199
+ return legacyJsonToolOutput(result, isError)
200
+ }
201
+
202
+ function stringifyLegacyToolResult(result: unknown): string {
203
+ try {
204
+ const serialized = JSON.stringify(result)
205
+ if (serialized !== undefined) {
206
+ return serialized
207
+ }
208
+ } catch {
209
+ // Fall back to the platform string representation for circular or unsupported values.
210
+ }
211
+ return String(result)
212
+ }
213
+
214
+ function normalizeMessagePart(value: unknown): unknown {
215
+ if (!isRecord(value)) {
216
+ return value
217
+ }
218
+
219
+ const normalized = withCurrentProviderOptions(value)
220
+ if (normalized.type === 'image' && !('mediaType' in normalized) && 'mimeType' in normalized) {
221
+ const { mimeType, ...rest } = normalized
222
+ return { ...rest, mediaType: mimeType }
223
+ }
224
+ if (
225
+ normalized.type === 'media' &&
226
+ typeof normalized.data === 'string' &&
227
+ typeof normalized.mediaType === 'string'
228
+ ) {
229
+ const { data, mediaType, type: _type, ...rest } = normalized
230
+ return { ...rest, type: 'file', data: { type: 'data', data }, mediaType }
231
+ }
232
+ if (normalized.type === 'tool-call' && !('input' in normalized) && 'args' in normalized) {
233
+ const { args, ...rest } = normalized
234
+ return { ...rest, input: args }
235
+ }
236
+ if (normalized.type === 'tool-result' && 'output' in normalized) {
237
+ const output = normalized.output
238
+ if (isRecord(output) && output.type === 'content' && Array.isArray(output.value)) {
239
+ return {
240
+ ...normalized,
241
+ output: {
242
+ ...output,
243
+ value: output.value.map((part) => {
244
+ const converted = normalizeLegacyToolContentPart(part)
245
+ if (converted !== undefined) return converted
246
+ // Explicit output has no result fallback. Reject invalid legacy-shaped content;
247
+ // returning it unchanged would strip its metadata alias or recurse into cycles.
248
+ // Every content variant requires a literal type, so this untagged sentinel rejects.
249
+ if (
250
+ isRecord(part) &&
251
+ (part.type === 'text' || part.type === 'image' || part.type === 'media')
252
+ ) {
253
+ return z.NEVER
254
+ }
255
+ return part
256
+ }),
257
+ },
258
+ }
259
+ }
260
+ }
261
+ if (normalized.type === 'tool-result' && !('output' in normalized)) {
262
+ const { experimental_content: experimentalContent, isError, result, ...rest } = normalized
263
+ return {
264
+ ...rest,
265
+ output: legacyToolOutput(result, isError === true, experimentalContent),
266
+ }
267
+ }
268
+ return normalized
269
+ }
270
+
271
+ /** Accepts legacy provider metadata and message parts before validating the current message shape. */
272
+ export function normalizeCoreMessage(value: unknown): unknown {
273
+ if (!isRecord(value)) {
274
+ return value
275
+ }
276
+ const normalized = withCurrentProviderOptions(value)
277
+ return Array.isArray(normalized.content)
278
+ ? { ...normalized, content: normalized.content.map(normalizeMessagePart) }
279
+ : normalized
280
+ }
281
+
282
+ export const toolCallPartBaseSchema = z.object({
283
+ type: z.literal('tool-call'),
284
+ toolCallId: z.string(),
285
+ toolName: z.string(),
286
+ input: z.unknown(),
287
+ providerOptions: providerMetadataSchema,
288
+ providerExecuted: z.boolean().optional(),
289
+ })
290
+
291
+ /**
292
+ * Shares message compatibility without pulling server AI clients or Node globals into the SDK.
293
+ * Inference retains each caller's binary union and tool-call output through both Zod versions.
294
+ */
295
+ export function createCoreMessageSchemas<
296
+ Data extends z.ZodType,
297
+ ToolCall extends z.ZodType,
298
+ Json extends z.ZodType,
299
+ ProviderOptions extends z.ZodType,
300
+ >(
301
+ inlineDataSchema: Data,
302
+ toolCallPartSchema: ToolCall,
303
+ jsonValueSchema: Json,
304
+ providerMetadataSchema: ProviderOptions,
305
+ ) {
306
+ const providerReferenceSchema = z.record(z.string(), z.string())
307
+ const taggedFileDataSchema = z.discriminatedUnion('type', [
308
+ z.object({ type: z.literal('data'), data: inlineDataSchema }),
309
+ z.object({ type: z.literal('url'), url: z.instanceof(URL) }),
310
+ z.object({ type: z.literal('reference'), reference: providerReferenceSchema }),
311
+ z.object({ type: z.literal('text'), text: z.string() }),
312
+ ])
313
+ const taggedReasoningFileDataSchema = z.discriminatedUnion('type', [
314
+ z.object({ type: z.literal('data'), data: inlineDataSchema }),
315
+ z.object({ type: z.literal('url'), url: z.instanceof(URL) }),
316
+ ])
317
+
318
+ const textPartSchema = z.object({
319
+ type: z.literal('text'),
320
+ text: z.string(),
321
+ providerOptions: providerMetadataSchema,
322
+ })
323
+ const imagePartSchema = z.object({
324
+ type: z.literal('image'),
325
+ image: z.union([inlineDataSchema, z.instanceof(URL), providerReferenceSchema]),
326
+ mediaType: z.string().optional(),
327
+ providerOptions: providerMetadataSchema,
328
+ })
329
+ const filePartSchema = z.object({
330
+ type: z.literal('file'),
331
+ data: z.union([
332
+ taggedFileDataSchema,
333
+ inlineDataSchema,
334
+ z.instanceof(URL),
335
+ providerReferenceSchema,
336
+ ]),
337
+ filename: z.string().optional(),
338
+ mediaType: z.string(),
339
+ providerOptions: providerMetadataSchema,
340
+ })
341
+ const reasoningPartSchema = z.object({
342
+ type: z.literal('reasoning'),
343
+ text: z.string(),
344
+ providerOptions: providerMetadataSchema,
345
+ })
346
+ function isCustomKind(value: string): value is `${string}.${string}` {
347
+ return value.includes('.')
348
+ }
349
+ const customPartSchema = z.object({
350
+ type: z.literal('custom'),
351
+ kind: z.string().refine(isCustomKind),
352
+ providerOptions: providerMetadataSchema,
353
+ })
354
+ const reasoningFilePartSchema = z.object({
355
+ type: z.literal('reasoning-file'),
356
+ data: z.union([taggedReasoningFileDataSchema, inlineDataSchema, z.instanceof(URL)]),
357
+ mediaType: z.string(),
358
+ providerOptions: providerMetadataSchema,
359
+ })
360
+ const toolOutputSchema = z.discriminatedUnion('type', [
361
+ z.object({
362
+ type: z.literal('text'),
363
+ value: z.string(),
364
+ providerOptions: providerMetadataSchema,
365
+ }),
366
+ z.object({
367
+ type: z.literal('json'),
368
+ value: jsonValueSchema,
369
+ providerOptions: providerMetadataSchema,
370
+ }),
371
+ z.object({
372
+ type: z.literal('execution-denied'),
373
+ reason: z.string().optional(),
374
+ providerOptions: providerMetadataSchema,
375
+ }),
376
+ z.object({
377
+ type: z.literal('error-text'),
378
+ value: z.string(),
379
+ providerOptions: providerMetadataSchema,
380
+ }),
381
+ z.object({
382
+ type: z.literal('error-json'),
383
+ value: jsonValueSchema,
384
+ providerOptions: providerMetadataSchema,
385
+ }),
386
+ z.object({
387
+ type: z.literal('content'),
388
+ value: z.array(
389
+ z.union([
390
+ z.object({
391
+ type: z.literal('text'),
392
+ text: z.string(),
393
+ providerOptions: providerMetadataSchema,
394
+ }),
395
+ z.object({
396
+ type: z.literal('file'),
397
+ data: taggedFileDataSchema,
398
+ mediaType: z.string(),
399
+ filename: z.string().optional(),
400
+ providerOptions: providerMetadataSchema,
401
+ }),
402
+ z.object({
403
+ type: z.literal('file-data'),
404
+ data: z.string(),
405
+ mediaType: z.string(),
406
+ filename: z.string().optional(),
407
+ providerOptions: providerMetadataSchema,
408
+ }),
409
+ z.object({
410
+ type: z.literal('file-url'),
411
+ url: z.string(),
412
+ mediaType: z.string().optional(),
413
+ providerOptions: providerMetadataSchema,
414
+ }),
415
+ z.object({
416
+ type: z.literal('file-id'),
417
+ fileId: z.union([z.string(), providerReferenceSchema]),
418
+ providerOptions: providerMetadataSchema,
419
+ }),
420
+ z.object({
421
+ type: z.literal('file-reference'),
422
+ providerReference: providerReferenceSchema,
423
+ providerOptions: providerMetadataSchema,
424
+ }),
425
+ z.object({
426
+ type: z.literal('image-data'),
427
+ data: z.string(),
428
+ mediaType: z.string(),
429
+ providerOptions: providerMetadataSchema,
430
+ }),
431
+ z.object({
432
+ type: z.literal('image-url'),
433
+ url: z.string(),
434
+ providerOptions: providerMetadataSchema,
435
+ }),
436
+ z.object({
437
+ type: z.literal('image-file-id'),
438
+ fileId: z.union([z.string(), providerReferenceSchema]),
439
+ providerOptions: providerMetadataSchema,
440
+ }),
441
+ z.object({
442
+ type: z.literal('image-file-reference'),
443
+ providerReference: providerReferenceSchema,
444
+ providerOptions: providerMetadataSchema,
445
+ }),
446
+ z.object({ type: z.literal('custom'), providerOptions: providerMetadataSchema }),
447
+ ]),
448
+ ),
449
+ }),
450
+ ])
451
+ const toolResultPartSchema = z.object({
452
+ type: z.literal('tool-result'),
453
+ toolCallId: z.string(),
454
+ toolName: z.string(),
455
+ output: toolOutputSchema,
456
+ providerOptions: providerMetadataSchema,
457
+ })
458
+ const toolApprovalRequestSchema = z.object({
459
+ type: z.literal('tool-approval-request'),
460
+ approvalId: z.string(),
461
+ toolCallId: z.string(),
462
+ isAutomatic: z.boolean().optional(),
463
+ signature: z.string().optional(),
464
+ })
465
+ const toolApprovalResponseSchema = z.object({
466
+ type: z.literal('tool-approval-response'),
467
+ approvalId: z.string(),
468
+ approved: z.boolean(),
469
+ reason: z.string().optional(),
470
+ providerExecuted: z.boolean().optional(),
471
+ })
472
+ const coreSystemMessageSchema = z.object({
473
+ role: z.literal('system'),
474
+ content: z.string(),
475
+ providerOptions: providerMetadataSchema,
476
+ })
477
+ const coreUserMessageSchema = z.object({
478
+ role: z.literal('user'),
479
+ content: z.union([
480
+ z.string(),
481
+ z.array(z.union([textPartSchema, imagePartSchema, filePartSchema])),
482
+ ]),
483
+ providerOptions: providerMetadataSchema,
484
+ })
485
+ const coreAssistantMessageSchema = z.object({
486
+ role: z.literal('assistant'),
487
+ content: z.union([
488
+ z.string(),
489
+ z.array(
490
+ z.union([
491
+ textPartSchema,
492
+ customPartSchema,
493
+ filePartSchema,
494
+ reasoningPartSchema,
495
+ reasoningFilePartSchema,
496
+ toolCallPartSchema,
497
+ toolResultPartSchema,
498
+ toolApprovalRequestSchema,
499
+ ]),
500
+ ),
501
+ ]),
502
+ providerOptions: providerMetadataSchema,
503
+ })
504
+ const coreToolMessageSchema = z.object({
505
+ role: z.literal('tool'),
506
+ content: z.array(z.union([toolResultPartSchema, toolApprovalResponseSchema])),
507
+ providerOptions: providerMetadataSchema,
508
+ })
509
+ const outputSchema = z.discriminatedUnion('role', [
510
+ coreSystemMessageSchema,
511
+ coreUserMessageSchema,
512
+ coreAssistantMessageSchema,
513
+ coreToolMessageSchema,
514
+ ])
515
+
516
+ return {
517
+ outputSchema,
518
+ coreSystemMessageSchema,
519
+ coreUserMessageSchema,
520
+ coreAssistantMessageSchema,
521
+ coreToolMessageSchema,
522
+ textPartSchema,
523
+ imagePartSchema,
524
+ filePartSchema,
525
+ customPartSchema,
526
+ reasoningPartSchema,
527
+ reasoningFilePartSchema,
528
+ toolCallPartSchema,
529
+ toolResultPartSchema,
530
+ toolApprovalRequestSchema,
531
+ toolApprovalResponseSchema,
532
+ toolOutputSchema,
533
+ }
534
+ }
535
+
536
+ /** Build the validated current message shape for runtime callers. */
537
+ export function createCoreMessageOutputSchema<
538
+ Data extends z.ZodType,
539
+ ToolCall extends z.ZodType,
540
+ Json extends z.ZodType,
541
+ ProviderOptions extends z.ZodType,
542
+ >(
543
+ inlineDataSchema: Data,
544
+ toolCallPartSchema: ToolCall,
545
+ jsonValueSchema: Json,
546
+ providerMetadataSchema: ProviderOptions,
547
+ ) {
548
+ return createCoreMessageSchemas(
549
+ inlineDataSchema,
550
+ toolCallPartSchema,
551
+ jsonValueSchema,
552
+ providerMetadataSchema,
553
+ ).outputSchema
554
+ }
@@ -344,9 +344,11 @@ function lintUseArray(
344
344
  result: AssemblyLinterResult[],
345
345
  row: number | undefined,
346
346
  column: number | undefined,
347
+ allowEmpty: boolean,
347
348
  ) {
348
349
  if (!Array.isArray(use)) return
349
350
  if (use.length === 0) {
351
+ if (allowEmpty) return
350
352
  result.push({
351
353
  code: 'empty-use-array',
352
354
  stepName,
@@ -612,6 +614,7 @@ export function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[] {
612
614
  lintHttpImportUrl(typedStep, stepName, result)
613
615
  }
614
616
 
617
+ const needsInput = botNeedsInput(typedStep.robot, stepName, typedStep)
615
618
  if (!has(typedStep, 'use')) {
616
619
  if (typedStep.robot === '/html/convert') {
617
620
  // The /html/convert robot can either act as a import robot when
@@ -632,7 +635,7 @@ export function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[] {
632
635
  } else if (
633
636
  // Check if this robot doesn't need input (like import robots, /upload/handle,
634
637
  // file-generating robots like /image/generate, /text/speak with prompt, etc.)
635
- !botNeedsInput(typedStep.robot, stepName, typedStep)
638
+ !needsInput
636
639
  ) {
637
640
  hasInputStep = true
638
641
  } else {
@@ -658,7 +661,7 @@ export function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[] {
658
661
  typeof item === 'object' && item !== null && 'name' in item && item.name === ':original'
659
662
  )
660
663
  })
661
- if (referencesOriginal) {
664
+ if (referencesOriginal || (!needsInput && typedStep.use.length === 0)) {
662
665
  hasInputStep = true
663
666
  }
664
667
 
@@ -671,6 +674,7 @@ export function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[] {
671
674
  result,
672
675
  typedStep.__line.use,
673
676
  typedStep.__column.use,
677
+ !needsInput,
674
678
  )
675
679
  } else if (typeof typedStep.use === 'object' && typedStep.use !== null) {
676
680
  // Situation 2: use parameter is an object, for example
@@ -690,6 +694,7 @@ export function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[] {
690
694
  // We still need to ensure elements match StepUseArrayItemSchema if processing them.
691
695
  // The existing lintUseArray function takes 'unknown[]' for its first arg's 'steps' property if it's an object, so this is compatible.
692
696
  if (
697
+ (!needsInput && useObject.steps.length === 0) ||
693
698
  useObject.steps.some((step) => {
694
699
  if (typeof step === 'string') {
695
700
  return step === ':original'
@@ -712,6 +717,7 @@ export function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[] {
712
717
  result,
713
718
  useStepsLine ?? typedStep.__line.use, // Fallback to the line of the 'use' key itself
714
719
  useStepsColumn ?? typedStep.__column.use, // Fallback to the column of the 'use' key itself
720
+ !needsInput,
715
721
  )
716
722
  } else if (typeof useObject.steps === 'string') {
717
723
  if (useObject.steps === ':original') {
@@ -725,6 +731,7 @@ export function lint(assembly: TemplateWithMetadata): AssemblyLinterResult[] {
725
731
  result,
726
732
  useStepsLine ?? typedStep.__line.use,
727
733
  useStepsColumn ?? typedStep.__column.use,
734
+ !needsInput,
728
735
  )
729
736
  } else if (typeof useObject.steps !== 'string') {
730
737
  // If 'steps' is not an array or not present, it's an invalid use object structure.
@@ -0,0 +1,11 @@
1
+ /** Format canonical English source copy without depending on the host's ICU locale data. */
2
+ export function formatEnglishList(
3
+ values: readonly string[],
4
+ conjunction: 'and' | 'or' = 'and',
5
+ ): string {
6
+ const lastValue = values.at(-1)
7
+ if (lastValue === undefined) throw new Error('English lists must contain at least one value')
8
+ if (values.length === 1) return lastValue
9
+ if (values.length === 2) return `${values[0]} ${conjunction} ${lastValue}`
10
+ return `${values.slice(0, -1).join(', ')}, ${conjunction} ${lastValue}`
11
+ }