transloadit 4.14.0 → 5.0.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 (628) hide show
  1. package/README.md +44 -4
  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.map +1 -1
  7. package/dist/Transloadit.js +3 -2
  8. package/dist/Transloadit.js.map +1 -1
  9. package/dist/alphalib/aiMessages.d.ts +33254 -0
  10. package/dist/alphalib/aiMessages.d.ts.map +1 -0
  11. package/dist/alphalib/aiMessages.js +479 -0
  12. package/dist/alphalib/aiMessages.js.map +1 -0
  13. package/dist/alphalib/assembly-linter.d.ts.map +1 -1
  14. package/dist/alphalib/assembly-linter.js +20 -15
  15. package/dist/alphalib/assembly-linter.js.map +1 -1
  16. package/dist/alphalib/englishList.d.ts +3 -0
  17. package/dist/alphalib/englishList.d.ts.map +1 -0
  18. package/dist/alphalib/englishList.js +12 -0
  19. package/dist/alphalib/englishList.js.map +1 -0
  20. package/dist/alphalib/errors.d.ts +16 -0
  21. package/dist/alphalib/errors.d.ts.map +1 -1
  22. package/dist/alphalib/errors.js +124 -13
  23. package/dist/alphalib/errors.js.map +1 -1
  24. package/dist/alphalib/imagemagickDensity.d.ts.map +1 -1
  25. package/dist/alphalib/imagemagickDensity.js +2 -2
  26. package/dist/alphalib/imagemagickDensity.js.map +1 -1
  27. package/dist/alphalib/lib/zodInputSemantics.d.ts +18 -0
  28. package/dist/alphalib/lib/zodInputSemantics.d.ts.map +1 -0
  29. package/dist/alphalib/lib/zodInputSemantics.js +86 -0
  30. package/dist/alphalib/lib/zodInputSemantics.js.map +1 -0
  31. package/dist/alphalib/object.d.ts +42 -2
  32. package/dist/alphalib/object.d.ts.map +1 -1
  33. package/dist/alphalib/object.js +133 -0
  34. package/dist/alphalib/object.js.map +1 -1
  35. package/dist/alphalib/stepParsing.d.ts +1 -0
  36. package/dist/alphalib/stepParsing.d.ts.map +1 -1
  37. package/dist/alphalib/stepParsing.js +9 -1
  38. package/dist/alphalib/stepParsing.js.map +1 -1
  39. package/dist/alphalib/types/apiParameterDescription.d.ts +14 -0
  40. package/dist/alphalib/types/apiParameterDescription.d.ts.map +1 -0
  41. package/dist/alphalib/types/apiParameterDescription.js +20 -0
  42. package/dist/alphalib/types/apiParameterDescription.js.map +1 -0
  43. package/dist/alphalib/types/assembliesGet.d.ts +1 -1
  44. package/dist/alphalib/types/assemblyReplay.d.ts +4 -4
  45. package/dist/alphalib/types/assemblyStatus.d.ts +6718 -64966
  46. package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
  47. package/dist/alphalib/types/assemblyStatus.js +68 -55
  48. package/dist/alphalib/types/assemblyStatus.js.map +1 -1
  49. package/dist/alphalib/types/errorReason.d.ts +7 -0
  50. package/dist/alphalib/types/errorReason.d.ts.map +1 -0
  51. package/dist/alphalib/types/errorReason.js +14 -0
  52. package/dist/alphalib/types/errorReason.js.map +1 -0
  53. package/dist/alphalib/types/file.d.ts +7 -0
  54. package/dist/alphalib/types/file.d.ts.map +1 -1
  55. package/dist/alphalib/types/file.js +15 -0
  56. package/dist/alphalib/types/file.js.map +1 -1
  57. package/dist/alphalib/types/fileHash.d.ts +16 -0
  58. package/dist/alphalib/types/fileHash.d.ts.map +1 -0
  59. package/dist/alphalib/types/fileHash.js +10 -0
  60. package/dist/alphalib/types/fileHash.js.map +1 -0
  61. package/dist/alphalib/types/responseErrors/HttpImportRobot.d.ts +23 -0
  62. package/dist/alphalib/types/responseErrors/HttpImportRobot.d.ts.map +1 -0
  63. package/dist/alphalib/types/responseErrors/HttpImportRobot.js +23 -0
  64. package/dist/alphalib/types/responseErrors/HttpImportRobot.js.map +1 -0
  65. package/dist/alphalib/types/robots/_ai-models.d.ts +28 -0
  66. package/dist/alphalib/types/robots/_ai-models.d.ts.map +1 -0
  67. package/dist/alphalib/types/robots/_ai-models.js +80 -0
  68. package/dist/alphalib/types/robots/_ai-models.js.map +1 -0
  69. package/dist/alphalib/types/robots/_index.d.ts +713 -1329
  70. package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
  71. package/dist/alphalib/types/robots/_index.js +4 -0
  72. package/dist/alphalib/types/robots/_index.js.map +1 -1
  73. package/dist/alphalib/types/robots/_instructions-primitives.d.ts +504 -129
  74. package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
  75. package/dist/alphalib/types/robots/_instructions-primitives.js +627 -280
  76. package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
  77. package/dist/alphalib/types/robots/ai-chat.d.ts +952 -2189
  78. package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
  79. package/dist/alphalib/types/robots/ai-chat.js +235 -368
  80. package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
  81. package/dist/alphalib/types/robots/assembly-savejson.d.ts +28 -16
  82. package/dist/alphalib/types/robots/assembly-savejson.d.ts.map +1 -1
  83. package/dist/alphalib/types/robots/assembly-savejson.js +2 -11
  84. package/dist/alphalib/types/robots/assembly-savejson.js.map +1 -1
  85. package/dist/alphalib/types/robots/audio-artwork.d.ts +80 -67
  86. package/dist/alphalib/types/robots/audio-artwork.d.ts.map +1 -1
  87. package/dist/alphalib/types/robots/audio-artwork.js +9 -38
  88. package/dist/alphalib/types/robots/audio-artwork.js.map +1 -1
  89. package/dist/alphalib/types/robots/audio-concat.d.ts +94 -81
  90. package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
  91. package/dist/alphalib/types/robots/audio-concat.js +11 -25
  92. package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
  93. package/dist/alphalib/types/robots/audio-encode.d.ts +80 -67
  94. package/dist/alphalib/types/robots/audio-encode.d.ts.map +1 -1
  95. package/dist/alphalib/types/robots/audio-encode.js +13 -43
  96. package/dist/alphalib/types/robots/audio-encode.js.map +1 -1
  97. package/dist/alphalib/types/robots/audio-loop.d.ts +80 -67
  98. package/dist/alphalib/types/robots/audio-loop.d.ts.map +1 -1
  99. package/dist/alphalib/types/robots/audio-loop.js +12 -40
  100. package/dist/alphalib/types/robots/audio-loop.js.map +1 -1
  101. package/dist/alphalib/types/robots/audio-merge.d.ts +94 -81
  102. package/dist/alphalib/types/robots/audio-merge.d.ts.map +1 -1
  103. package/dist/alphalib/types/robots/audio-merge.js +11 -25
  104. package/dist/alphalib/types/robots/audio-merge.js.map +1 -1
  105. package/dist/alphalib/types/robots/audio-split.d.ts +80 -67
  106. package/dist/alphalib/types/robots/audio-split.d.ts.map +1 -1
  107. package/dist/alphalib/types/robots/audio-split.js +15 -45
  108. package/dist/alphalib/types/robots/audio-split.js.map +1 -1
  109. package/dist/alphalib/types/robots/audio-waveform.d.ts +120 -107
  110. package/dist/alphalib/types/robots/audio-waveform.d.ts.map +1 -1
  111. package/dist/alphalib/types/robots/audio-waveform.js +15 -39
  112. package/dist/alphalib/types/robots/audio-waveform.js.map +1 -1
  113. package/dist/alphalib/types/robots/azure-import.d.ts +48 -35
  114. package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
  115. package/dist/alphalib/types/robots/azure-import.js +5 -35
  116. package/dist/alphalib/types/robots/azure-import.js.map +1 -1
  117. package/dist/alphalib/types/robots/azure-store.d.ts +87 -71
  118. package/dist/alphalib/types/robots/azure-store.d.ts.map +1 -1
  119. package/dist/alphalib/types/robots/azure-store.js +11 -50
  120. package/dist/alphalib/types/robots/azure-store.js.map +1 -1
  121. package/dist/alphalib/types/robots/backblaze-import.d.ts +48 -35
  122. package/dist/alphalib/types/robots/backblaze-import.d.ts.map +1 -1
  123. package/dist/alphalib/types/robots/backblaze-import.js +6 -39
  124. package/dist/alphalib/types/robots/backblaze-import.js.map +1 -1
  125. package/dist/alphalib/types/robots/backblaze-store.d.ts +80 -67
  126. package/dist/alphalib/types/robots/backblaze-store.d.ts.map +1 -1
  127. package/dist/alphalib/types/robots/backblaze-store.js +8 -44
  128. package/dist/alphalib/types/robots/backblaze-store.js.map +1 -1
  129. package/dist/alphalib/types/robots/box-import.d.ts +44 -27
  130. package/dist/alphalib/types/robots/box-import.d.ts.map +1 -1
  131. package/dist/alphalib/types/robots/box-import.js +7 -33
  132. package/dist/alphalib/types/robots/box-import.js.map +1 -1
  133. package/dist/alphalib/types/robots/box-store.d.ts +85 -68
  134. package/dist/alphalib/types/robots/box-store.d.ts.map +1 -1
  135. package/dist/alphalib/types/robots/box-store.js +8 -40
  136. package/dist/alphalib/types/robots/box-store.js.map +1 -1
  137. package/dist/alphalib/types/robots/cloudfiles-import.d.ts +48 -35
  138. package/dist/alphalib/types/robots/cloudfiles-import.d.ts.map +1 -1
  139. package/dist/alphalib/types/robots/cloudfiles-import.js +8 -45
  140. package/dist/alphalib/types/robots/cloudfiles-import.js.map +1 -1
  141. package/dist/alphalib/types/robots/cloudfiles-store.d.ts +80 -67
  142. package/dist/alphalib/types/robots/cloudfiles-store.d.ts.map +1 -1
  143. package/dist/alphalib/types/robots/cloudfiles-store.js +5 -36
  144. package/dist/alphalib/types/robots/cloudfiles-store.js.map +1 -1
  145. package/dist/alphalib/types/robots/cloudflare-import.d.ts +48 -35
  146. package/dist/alphalib/types/robots/cloudflare-import.d.ts.map +1 -1
  147. package/dist/alphalib/types/robots/cloudflare-import.js +10 -57
  148. package/dist/alphalib/types/robots/cloudflare-import.js.map +1 -1
  149. package/dist/alphalib/types/robots/cloudflare-store.d.ts +80 -67
  150. package/dist/alphalib/types/robots/cloudflare-store.d.ts.map +1 -1
  151. package/dist/alphalib/types/robots/cloudflare-store.js +11 -54
  152. package/dist/alphalib/types/robots/cloudflare-store.js.map +1 -1
  153. package/dist/alphalib/types/robots/digitalocean-import.d.ts +56 -43
  154. package/dist/alphalib/types/robots/digitalocean-import.d.ts.map +1 -1
  155. package/dist/alphalib/types/robots/digitalocean-import.js +8 -49
  156. package/dist/alphalib/types/robots/digitalocean-import.js.map +1 -1
  157. package/dist/alphalib/types/robots/digitalocean-store.d.ts +88 -75
  158. package/dist/alphalib/types/robots/digitalocean-store.d.ts.map +1 -1
  159. package/dist/alphalib/types/robots/digitalocean-store.js +8 -56
  160. package/dist/alphalib/types/robots/digitalocean-store.js.map +1 -1
  161. package/dist/alphalib/types/robots/document-autorotate.d.ts +80 -67
  162. package/dist/alphalib/types/robots/document-autorotate.d.ts.map +1 -1
  163. package/dist/alphalib/types/robots/document-autorotate.js +5 -32
  164. package/dist/alphalib/types/robots/document-autorotate.js.map +1 -1
  165. package/dist/alphalib/types/robots/document-convert.d.ts +84 -71
  166. package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
  167. package/dist/alphalib/types/robots/document-convert.js +7 -33
  168. package/dist/alphalib/types/robots/document-convert.js.map +1 -1
  169. package/dist/alphalib/types/robots/document-extract.d.ts +80 -67
  170. package/dist/alphalib/types/robots/document-extract.d.ts.map +1 -1
  171. package/dist/alphalib/types/robots/document-extract.js +10 -36
  172. package/dist/alphalib/types/robots/document-extract.js.map +1 -1
  173. package/dist/alphalib/types/robots/document-merge.d.ts +80 -67
  174. package/dist/alphalib/types/robots/document-merge.d.ts.map +1 -1
  175. package/dist/alphalib/types/robots/document-merge.js +4 -25
  176. package/dist/alphalib/types/robots/document-merge.js.map +1 -1
  177. package/dist/alphalib/types/robots/document-ocr.d.ts +80 -67
  178. package/dist/alphalib/types/robots/document-ocr.d.ts.map +1 -1
  179. package/dist/alphalib/types/robots/document-ocr.js +10 -47
  180. package/dist/alphalib/types/robots/document-ocr.js.map +1 -1
  181. package/dist/alphalib/types/robots/document-optimize.d.ts +80 -67
  182. package/dist/alphalib/types/robots/document-optimize.d.ts.map +1 -1
  183. package/dist/alphalib/types/robots/document-optimize.js +7 -31
  184. package/dist/alphalib/types/robots/document-optimize.js.map +1 -1
  185. package/dist/alphalib/types/robots/document-split.d.ts +80 -67
  186. package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
  187. package/dist/alphalib/types/robots/document-split.js +7 -34
  188. package/dist/alphalib/types/robots/document-split.js.map +1 -1
  189. package/dist/alphalib/types/robots/document-thumbs.d.ts +120 -101
  190. package/dist/alphalib/types/robots/document-thumbs.d.ts.map +1 -1
  191. package/dist/alphalib/types/robots/document-thumbs.js +24 -31
  192. package/dist/alphalib/types/robots/document-thumbs.js.map +1 -1
  193. package/dist/alphalib/types/robots/dropbox-import.d.ts +40 -27
  194. package/dist/alphalib/types/robots/dropbox-import.d.ts.map +1 -1
  195. package/dist/alphalib/types/robots/dropbox-import.js +5 -35
  196. package/dist/alphalib/types/robots/dropbox-import.js.map +1 -1
  197. package/dist/alphalib/types/robots/dropbox-store.d.ts +84 -68
  198. package/dist/alphalib/types/robots/dropbox-store.d.ts.map +1 -1
  199. package/dist/alphalib/types/robots/dropbox-store.js +8 -42
  200. package/dist/alphalib/types/robots/dropbox-store.js.map +1 -1
  201. package/dist/alphalib/types/robots/edgly-deliver.d.ts +32 -19
  202. package/dist/alphalib/types/robots/edgly-deliver.d.ts.map +1 -1
  203. package/dist/alphalib/types/robots/edgly-deliver.js +4 -24
  204. package/dist/alphalib/types/robots/edgly-deliver.js.map +1 -1
  205. package/dist/alphalib/types/robots/file-compress.d.ts +80 -67
  206. package/dist/alphalib/types/robots/file-compress.d.ts.map +1 -1
  207. package/dist/alphalib/types/robots/file-compress.js +4 -20
  208. package/dist/alphalib/types/robots/file-compress.js.map +1 -1
  209. package/dist/alphalib/types/robots/file-decompress.d.ts +96 -83
  210. package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
  211. package/dist/alphalib/types/robots/file-decompress.js +10 -41
  212. package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
  213. package/dist/alphalib/types/robots/file-filter.d.ts +99 -87
  214. package/dist/alphalib/types/robots/file-filter.d.ts.map +1 -1
  215. package/dist/alphalib/types/robots/file-filter.js +11 -40
  216. package/dist/alphalib/types/robots/file-filter.js.map +1 -1
  217. package/dist/alphalib/types/robots/file-hash.d.ts +84 -71
  218. package/dist/alphalib/types/robots/file-hash.d.ts.map +1 -1
  219. package/dist/alphalib/types/robots/file-hash.js +12 -43
  220. package/dist/alphalib/types/robots/file-hash.js.map +1 -1
  221. package/dist/alphalib/types/robots/file-preview.d.ts +113 -100
  222. package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
  223. package/dist/alphalib/types/robots/file-preview.js +14 -39
  224. package/dist/alphalib/types/robots/file-preview.js.map +1 -1
  225. package/dist/alphalib/types/robots/file-read.d.ts +80 -67
  226. package/dist/alphalib/types/robots/file-read.d.ts.map +1 -1
  227. package/dist/alphalib/types/robots/file-read.js +5 -26
  228. package/dist/alphalib/types/robots/file-read.js.map +1 -1
  229. package/dist/alphalib/types/robots/file-serve.d.ts +81 -68
  230. package/dist/alphalib/types/robots/file-serve.d.ts.map +1 -1
  231. package/dist/alphalib/types/robots/file-serve.js +4 -21
  232. package/dist/alphalib/types/robots/file-serve.js.map +1 -1
  233. package/dist/alphalib/types/robots/file-verify.d.ts +88 -75
  234. package/dist/alphalib/types/robots/file-verify.d.ts.map +1 -1
  235. package/dist/alphalib/types/robots/file-verify.js +11 -41
  236. package/dist/alphalib/types/robots/file-verify.js.map +1 -1
  237. package/dist/alphalib/types/robots/file-virusscan.d.ts +83 -67
  238. package/dist/alphalib/types/robots/file-virusscan.d.ts.map +1 -1
  239. package/dist/alphalib/types/robots/file-virusscan.js +16 -42
  240. package/dist/alphalib/types/robots/file-virusscan.js.map +1 -1
  241. package/dist/alphalib/types/robots/file-watermark.d.ts +81 -67
  242. package/dist/alphalib/types/robots/file-watermark.d.ts.map +1 -1
  243. package/dist/alphalib/types/robots/file-watermark.js +10 -29
  244. package/dist/alphalib/types/robots/file-watermark.js.map +1 -1
  245. package/dist/alphalib/types/robots/ftp-import.d.ts +40 -27
  246. package/dist/alphalib/types/robots/ftp-import.d.ts.map +1 -1
  247. package/dist/alphalib/types/robots/ftp-import.js +5 -33
  248. package/dist/alphalib/types/robots/ftp-import.js.map +1 -1
  249. package/dist/alphalib/types/robots/ftp-store.d.ts +85 -67
  250. package/dist/alphalib/types/robots/ftp-store.d.ts.map +1 -1
  251. package/dist/alphalib/types/robots/ftp-store.js +7 -34
  252. package/dist/alphalib/types/robots/ftp-store.js.map +1 -1
  253. package/dist/alphalib/types/robots/google-import.d.ts +48 -35
  254. package/dist/alphalib/types/robots/google-import.d.ts.map +1 -1
  255. package/dist/alphalib/types/robots/google-import.js +10 -43
  256. package/dist/alphalib/types/robots/google-import.js.map +1 -1
  257. package/dist/alphalib/types/robots/google-store.d.ts +80 -67
  258. package/dist/alphalib/types/robots/google-store.d.ts.map +1 -1
  259. package/dist/alphalib/types/robots/google-store.js +10 -41
  260. package/dist/alphalib/types/robots/google-store.js.map +1 -1
  261. package/dist/alphalib/types/robots/html-convert.d.ts +107 -89
  262. package/dist/alphalib/types/robots/html-convert.d.ts.map +1 -1
  263. package/dist/alphalib/types/robots/html-convert.js +6 -22
  264. package/dist/alphalib/types/robots/html-convert.js.map +1 -1
  265. package/dist/alphalib/types/robots/http-import.d.ts +76 -63
  266. package/dist/alphalib/types/robots/http-import.d.ts.map +1 -1
  267. package/dist/alphalib/types/robots/http-import.js +14 -19
  268. package/dist/alphalib/types/robots/http-import.js.map +1 -1
  269. package/dist/alphalib/types/robots/http-request.d.ts +538 -0
  270. package/dist/alphalib/types/robots/http-request.d.ts.map +1 -0
  271. package/dist/alphalib/types/robots/http-request.js +162 -0
  272. package/dist/alphalib/types/robots/http-request.js.map +1 -0
  273. package/dist/alphalib/types/robots/image-bgremove.d.ts +80 -67
  274. package/dist/alphalib/types/robots/image-bgremove.d.ts.map +1 -1
  275. package/dist/alphalib/types/robots/image-bgremove.js +6 -33
  276. package/dist/alphalib/types/robots/image-bgremove.js.map +1 -1
  277. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts +92 -79
  278. package/dist/alphalib/types/robots/image-copyrightdetect.d.ts.map +1 -1
  279. package/dist/alphalib/types/robots/image-copyrightdetect.js +9 -33
  280. package/dist/alphalib/types/robots/image-copyrightdetect.js.map +1 -1
  281. package/dist/alphalib/types/robots/image-describe.d.ts +80 -67
  282. package/dist/alphalib/types/robots/image-describe.d.ts.map +1 -1
  283. package/dist/alphalib/types/robots/image-describe.js +8 -37
  284. package/dist/alphalib/types/robots/image-describe.js.map +1 -1
  285. package/dist/alphalib/types/robots/image-enhance.d.ts +80 -67
  286. package/dist/alphalib/types/robots/image-enhance.d.ts.map +1 -1
  287. package/dist/alphalib/types/robots/image-enhance.js +7 -31
  288. package/dist/alphalib/types/robots/image-enhance.js.map +1 -1
  289. package/dist/alphalib/types/robots/image-facedetect.d.ts +88 -75
  290. package/dist/alphalib/types/robots/image-facedetect.d.ts.map +1 -1
  291. package/dist/alphalib/types/robots/image-facedetect.js +16 -44
  292. package/dist/alphalib/types/robots/image-facedetect.js.map +1 -1
  293. package/dist/alphalib/types/robots/image-generate.d.ts +96 -86
  294. package/dist/alphalib/types/robots/image-generate.d.ts.map +1 -1
  295. package/dist/alphalib/types/robots/image-generate.js +17 -22
  296. package/dist/alphalib/types/robots/image-generate.js.map +1 -1
  297. package/dist/alphalib/types/robots/image-merge.d.ts +96 -83
  298. package/dist/alphalib/types/robots/image-merge.d.ts.map +1 -1
  299. package/dist/alphalib/types/robots/image-merge.js +9 -40
  300. package/dist/alphalib/types/robots/image-merge.js.map +1 -1
  301. package/dist/alphalib/types/robots/image-ocr.d.ts +80 -67
  302. package/dist/alphalib/types/robots/image-ocr.d.ts.map +1 -1
  303. package/dist/alphalib/types/robots/image-ocr.js +11 -47
  304. package/dist/alphalib/types/robots/image-ocr.js.map +1 -1
  305. package/dist/alphalib/types/robots/image-optimize.d.ts +88 -75
  306. package/dist/alphalib/types/robots/image-optimize.d.ts.map +1 -1
  307. package/dist/alphalib/types/robots/image-optimize.js +6 -32
  308. package/dist/alphalib/types/robots/image-optimize.js.map +1 -1
  309. package/dist/alphalib/types/robots/image-resize.d.ts +217 -112
  310. package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
  311. package/dist/alphalib/types/robots/image-resize.js +15 -42
  312. package/dist/alphalib/types/robots/image-resize.js.map +1 -1
  313. package/dist/alphalib/types/robots/image-upscale.d.ts +97 -81
  314. package/dist/alphalib/types/robots/image-upscale.d.ts.map +1 -1
  315. package/dist/alphalib/types/robots/image-upscale.js +23 -42
  316. package/dist/alphalib/types/robots/image-upscale.js.map +1 -1
  317. package/dist/alphalib/types/robots/mega-import.d.ts +48 -35
  318. package/dist/alphalib/types/robots/mega-import.d.ts.map +1 -1
  319. package/dist/alphalib/types/robots/mega-import.js +12 -59
  320. package/dist/alphalib/types/robots/mega-import.js.map +1 -1
  321. package/dist/alphalib/types/robots/mega-store.d.ts +80 -67
  322. package/dist/alphalib/types/robots/mega-store.d.ts.map +1 -1
  323. package/dist/alphalib/types/robots/mega-store.js +14 -60
  324. package/dist/alphalib/types/robots/mega-store.js.map +1 -1
  325. package/dist/alphalib/types/robots/meta-read.d.ts +30 -16
  326. package/dist/alphalib/types/robots/meta-read.d.ts.map +1 -1
  327. package/dist/alphalib/types/robots/meta-read.js +4 -20
  328. package/dist/alphalib/types/robots/meta-read.js.map +1 -1
  329. package/dist/alphalib/types/robots/meta-write.d.ts +80 -67
  330. package/dist/alphalib/types/robots/meta-write.d.ts.map +1 -1
  331. package/dist/alphalib/types/robots/meta-write.js +9 -32
  332. package/dist/alphalib/types/robots/meta-write.js.map +1 -1
  333. package/dist/alphalib/types/robots/minio-import.d.ts +48 -35
  334. package/dist/alphalib/types/robots/minio-import.d.ts.map +1 -1
  335. package/dist/alphalib/types/robots/minio-import.js +9 -60
  336. package/dist/alphalib/types/robots/minio-import.js.map +1 -1
  337. package/dist/alphalib/types/robots/minio-store.d.ts +80 -67
  338. package/dist/alphalib/types/robots/minio-store.d.ts.map +1 -1
  339. package/dist/alphalib/types/robots/minio-store.js +9 -50
  340. package/dist/alphalib/types/robots/minio-store.js.map +1 -1
  341. package/dist/alphalib/types/robots/progress-simulate.d.ts +34 -28
  342. package/dist/alphalib/types/robots/progress-simulate.d.ts.map +1 -1
  343. package/dist/alphalib/types/robots/progress-simulate.js +8 -28
  344. package/dist/alphalib/types/robots/progress-simulate.js.map +1 -1
  345. package/dist/alphalib/types/robots/s3-import.d.ts +48 -35
  346. package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
  347. package/dist/alphalib/types/robots/s3-import.js +7 -38
  348. package/dist/alphalib/types/robots/s3-import.js.map +1 -1
  349. package/dist/alphalib/types/robots/s3-store.d.ts +84 -68
  350. package/dist/alphalib/types/robots/s3-store.d.ts.map +1 -1
  351. package/dist/alphalib/types/robots/s3-store.js +14 -44
  352. package/dist/alphalib/types/robots/s3-store.js.map +1 -1
  353. package/dist/alphalib/types/robots/script-run.d.ts +83 -67
  354. package/dist/alphalib/types/robots/script-run.d.ts.map +1 -1
  355. package/dist/alphalib/types/robots/script-run.js +9 -27
  356. package/dist/alphalib/types/robots/script-run.js.map +1 -1
  357. package/dist/alphalib/types/robots/sftp-import.d.ts +51 -35
  358. package/dist/alphalib/types/robots/sftp-import.d.ts.map +1 -1
  359. package/dist/alphalib/types/robots/sftp-import.js +7 -36
  360. package/dist/alphalib/types/robots/sftp-import.js.map +1 -1
  361. package/dist/alphalib/types/robots/sftp-store.d.ts +83 -67
  362. package/dist/alphalib/types/robots/sftp-store.d.ts.map +1 -1
  363. package/dist/alphalib/types/robots/sftp-store.js +9 -41
  364. package/dist/alphalib/types/robots/sftp-store.js.map +1 -1
  365. package/dist/alphalib/types/robots/speech-transcribe.d.ts +102 -85
  366. package/dist/alphalib/types/robots/speech-transcribe.d.ts.map +1 -1
  367. package/dist/alphalib/types/robots/speech-transcribe.js +23 -44
  368. package/dist/alphalib/types/robots/speech-transcribe.js.map +1 -1
  369. package/dist/alphalib/types/robots/supabase-import.d.ts +48 -35
  370. package/dist/alphalib/types/robots/supabase-import.d.ts.map +1 -1
  371. package/dist/alphalib/types/robots/supabase-import.js +12 -59
  372. package/dist/alphalib/types/robots/supabase-import.js.map +1 -1
  373. package/dist/alphalib/types/robots/supabase-store.d.ts +80 -79
  374. package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
  375. package/dist/alphalib/types/robots/supabase-store.js +12 -56
  376. package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
  377. package/dist/alphalib/types/robots/swift-import.d.ts +48 -47
  378. package/dist/alphalib/types/robots/swift-import.d.ts.map +1 -1
  379. package/dist/alphalib/types/robots/swift-import.js +14 -55
  380. package/dist/alphalib/types/robots/swift-import.js.map +1 -1
  381. package/dist/alphalib/types/robots/swift-store.d.ts +80 -79
  382. package/dist/alphalib/types/robots/swift-store.d.ts.map +1 -1
  383. package/dist/alphalib/types/robots/swift-store.js +14 -62
  384. package/dist/alphalib/types/robots/swift-store.js.map +1 -1
  385. package/dist/alphalib/types/robots/text-speak.d.ts +80 -67
  386. package/dist/alphalib/types/robots/text-speak.d.ts.map +1 -1
  387. package/dist/alphalib/types/robots/text-speak.js +11 -37
  388. package/dist/alphalib/types/robots/text-speak.js.map +1 -1
  389. package/dist/alphalib/types/robots/text-translate.d.ts +92 -79
  390. package/dist/alphalib/types/robots/text-translate.d.ts.map +1 -1
  391. package/dist/alphalib/types/robots/text-translate.js +9 -36
  392. package/dist/alphalib/types/robots/text-translate.js.map +1 -1
  393. package/dist/alphalib/types/robots/tigris-import.d.ts +48 -35
  394. package/dist/alphalib/types/robots/tigris-import.d.ts.map +1 -1
  395. package/dist/alphalib/types/robots/tigris-import.js +9 -60
  396. package/dist/alphalib/types/robots/tigris-import.js.map +1 -1
  397. package/dist/alphalib/types/robots/tigris-store.d.ts +80 -67
  398. package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
  399. package/dist/alphalib/types/robots/tigris-store.js +7 -48
  400. package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
  401. package/dist/alphalib/types/robots/tlcdn-deliver.d.ts +32 -19
  402. package/dist/alphalib/types/robots/tlcdn-deliver.d.ts.map +1 -1
  403. package/dist/alphalib/types/robots/tlcdn-deliver.js +4 -25
  404. package/dist/alphalib/types/robots/tlcdn-deliver.js.map +1 -1
  405. package/dist/alphalib/types/robots/transloadit-import.d.ts +58 -45
  406. package/dist/alphalib/types/robots/transloadit-import.d.ts.map +1 -1
  407. package/dist/alphalib/types/robots/transloadit-import.js +17 -21
  408. package/dist/alphalib/types/robots/transloadit-import.js.map +1 -1
  409. package/dist/alphalib/types/robots/transloadit-store.d.ts +70 -57
  410. package/dist/alphalib/types/robots/transloadit-store.d.ts.map +1 -1
  411. package/dist/alphalib/types/robots/transloadit-store.js +14 -6
  412. package/dist/alphalib/types/robots/transloadit-store.js.map +1 -1
  413. package/dist/alphalib/types/robots/tus-store.d.ts +84 -71
  414. package/dist/alphalib/types/robots/tus-store.d.ts.map +1 -1
  415. package/dist/alphalib/types/robots/tus-store.js +8 -37
  416. package/dist/alphalib/types/robots/tus-store.js.map +1 -1
  417. package/dist/alphalib/types/robots/upload-handle.d.ts +32 -19
  418. package/dist/alphalib/types/robots/upload-handle.d.ts.map +1 -1
  419. package/dist/alphalib/types/robots/upload-handle.js +4 -19
  420. package/dist/alphalib/types/robots/upload-handle.js.map +1 -1
  421. package/dist/alphalib/types/robots/video-adaptive.d.ts +112 -99
  422. package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
  423. package/dist/alphalib/types/robots/video-adaptive.js +4 -26
  424. package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
  425. package/dist/alphalib/types/robots/video-artwork.d.ts +80 -67
  426. package/dist/alphalib/types/robots/video-artwork.d.ts.map +1 -1
  427. package/dist/alphalib/types/robots/video-artwork.js +7 -32
  428. package/dist/alphalib/types/robots/video-artwork.js.map +1 -1
  429. package/dist/alphalib/types/robots/video-concat.d.ts +104 -91
  430. package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
  431. package/dist/alphalib/types/robots/video-concat.js +6 -27
  432. package/dist/alphalib/types/robots/video-concat.js.map +1 -1
  433. package/dist/alphalib/types/robots/video-encode.d.ts +121 -103
  434. package/dist/alphalib/types/robots/video-encode.d.ts.map +1 -1
  435. package/dist/alphalib/types/robots/video-encode.js +13 -38
  436. package/dist/alphalib/types/robots/video-encode.js.map +1 -1
  437. package/dist/alphalib/types/robots/video-generate.d.ts +96 -86
  438. package/dist/alphalib/types/robots/video-generate.d.ts.map +1 -1
  439. package/dist/alphalib/types/robots/video-generate.js +11 -18
  440. package/dist/alphalib/types/robots/video-generate.js.map +1 -1
  441. package/dist/alphalib/types/robots/video-merge.d.ts +135 -119
  442. package/dist/alphalib/types/robots/video-merge.d.ts.map +1 -1
  443. package/dist/alphalib/types/robots/video-merge.js +12 -32
  444. package/dist/alphalib/types/robots/video-merge.js.map +1 -1
  445. package/dist/alphalib/types/robots/video-ondemand.d.ts +156 -139
  446. package/dist/alphalib/types/robots/video-ondemand.d.ts.map +1 -1
  447. package/dist/alphalib/types/robots/video-ondemand.js +11 -27
  448. package/dist/alphalib/types/robots/video-ondemand.js.map +1 -1
  449. package/dist/alphalib/types/robots/video-split.d.ts +104 -91
  450. package/dist/alphalib/types/robots/video-split.d.ts.map +1 -1
  451. package/dist/alphalib/types/robots/video-split.js +11 -39
  452. package/dist/alphalib/types/robots/video-split.js.map +1 -1
  453. package/dist/alphalib/types/robots/video-subtitle.d.ts +104 -91
  454. package/dist/alphalib/types/robots/video-subtitle.d.ts.map +1 -1
  455. package/dist/alphalib/types/robots/video-subtitle.js +7 -30
  456. package/dist/alphalib/types/robots/video-subtitle.js.map +1 -1
  457. package/dist/alphalib/types/robots/video-thumbs.d.ts +112 -95
  458. package/dist/alphalib/types/robots/video-thumbs.d.ts.map +1 -1
  459. package/dist/alphalib/types/robots/video-thumbs.js +46 -53
  460. package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
  461. package/dist/alphalib/types/robots/vimeo-import.d.ts +30 -17
  462. package/dist/alphalib/types/robots/vimeo-import.d.ts.map +1 -1
  463. package/dist/alphalib/types/robots/vimeo-import.js +7 -17
  464. package/dist/alphalib/types/robots/vimeo-import.js.map +1 -1
  465. package/dist/alphalib/types/robots/vimeo-store.d.ts +83 -67
  466. package/dist/alphalib/types/robots/vimeo-store.d.ts.map +1 -1
  467. package/dist/alphalib/types/robots/vimeo-store.js +11 -37
  468. package/dist/alphalib/types/robots/vimeo-store.js.map +1 -1
  469. package/dist/alphalib/types/robots/wasabi-import.d.ts +48 -35
  470. package/dist/alphalib/types/robots/wasabi-import.d.ts.map +1 -1
  471. package/dist/alphalib/types/robots/wasabi-import.js +9 -56
  472. package/dist/alphalib/types/robots/wasabi-import.js.map +1 -1
  473. package/dist/alphalib/types/robots/wasabi-store.d.ts +80 -67
  474. package/dist/alphalib/types/robots/wasabi-store.d.ts.map +1 -1
  475. package/dist/alphalib/types/robots/wasabi-store.js +10 -52
  476. package/dist/alphalib/types/robots/wasabi-store.js.map +1 -1
  477. package/dist/alphalib/types/robots/youtube-store.d.ts +98 -85
  478. package/dist/alphalib/types/robots/youtube-store.d.ts.map +1 -1
  479. package/dist/alphalib/types/robots/youtube-store.js +42 -63
  480. package/dist/alphalib/types/robots/youtube-store.js.map +1 -1
  481. package/dist/alphalib/types/stackVersions.d.ts +40 -1
  482. package/dist/alphalib/types/stackVersions.d.ts.map +1 -1
  483. package/dist/alphalib/types/stackVersions.js +25 -3
  484. package/dist/alphalib/types/stackVersions.js.map +1 -1
  485. package/dist/alphalib/types/storageAsset.d.ts +28 -22
  486. package/dist/alphalib/types/storageAsset.d.ts.map +1 -1
  487. package/dist/alphalib/types/storageAsset.js +30 -12
  488. package/dist/alphalib/types/storageAsset.js.map +1 -1
  489. package/dist/alphalib/types/storageResults.d.ts +29 -0
  490. package/dist/alphalib/types/storageResults.d.ts.map +1 -0
  491. package/dist/alphalib/types/storageResults.js +53 -0
  492. package/dist/alphalib/types/storageResults.js.map +1 -0
  493. package/dist/alphalib/types/template.d.ts +16 -16
  494. package/dist/alphalib/types/templateCredential.d.ts +2 -2
  495. package/dist/alphalib/types/utility.d.ts +22 -0
  496. package/dist/alphalib/types/utility.d.ts.map +1 -0
  497. package/dist/alphalib/types/utility.js +2 -0
  498. package/dist/alphalib/types/utility.js.map +1 -0
  499. package/dist/storageResults.d.ts +2 -13
  500. package/dist/storageResults.d.ts.map +1 -1
  501. package/dist/storageResults.js +9 -34
  502. package/dist/storageResults.js.map +1 -1
  503. package/package.json +1 -2
  504. package/src/ApiError.ts +11 -4
  505. package/src/Transloadit.ts +6 -3
  506. package/src/alphalib/aiMessages.ts +554 -0
  507. package/src/alphalib/assembly-linter.ts +9 -2
  508. package/src/alphalib/englishList.ts +11 -0
  509. package/src/alphalib/errors.ts +159 -13
  510. package/src/alphalib/imagemagickDensity.ts +2 -1
  511. package/src/alphalib/lib/zodInputSemantics.ts +114 -0
  512. package/src/alphalib/object.ts +178 -3
  513. package/src/alphalib/stepParsing.ts +10 -2
  514. package/src/alphalib/types/apiParameterDescription.ts +41 -0
  515. package/src/alphalib/types/assemblyStatus.ts +115 -83
  516. package/src/alphalib/types/errorReason.ts +14 -0
  517. package/src/alphalib/types/file.ts +18 -0
  518. package/src/alphalib/types/fileHash.ts +10 -0
  519. package/src/alphalib/types/responseErrors/HttpImportRobot.ts +22 -0
  520. package/src/alphalib/types/robots/_ai-models.ts +91 -0
  521. package/src/alphalib/types/robots/_index.ts +14 -0
  522. package/src/alphalib/types/robots/_instructions-primitives.ts +839 -308
  523. package/src/alphalib/types/robots/ai-chat.ts +358 -460
  524. package/src/alphalib/types/robots/assembly-savejson.ts +2 -11
  525. package/src/alphalib/types/robots/audio-artwork.ts +35 -61
  526. package/src/alphalib/types/robots/audio-concat.ts +17 -25
  527. package/src/alphalib/types/robots/audio-encode.ts +35 -65
  528. package/src/alphalib/types/robots/audio-loop.ts +34 -61
  529. package/src/alphalib/types/robots/audio-merge.ts +17 -25
  530. package/src/alphalib/types/robots/audio-split.ts +37 -67
  531. package/src/alphalib/types/robots/audio-waveform.ts +42 -65
  532. package/src/alphalib/types/robots/azure-import.ts +26 -57
  533. package/src/alphalib/types/robots/azure-store.ts +48 -72
  534. package/src/alphalib/types/robots/backblaze-import.ts +30 -63
  535. package/src/alphalib/types/robots/backblaze-store.ts +37 -66
  536. package/src/alphalib/types/robots/box-import.ts +32 -55
  537. package/src/alphalib/types/robots/box-store.ts +40 -63
  538. package/src/alphalib/types/robots/cloudfiles-import.ts +34 -70
  539. package/src/alphalib/types/robots/cloudfiles-store.ts +28 -59
  540. package/src/alphalib/types/robots/cloudflare-import.ts +37 -83
  541. package/src/alphalib/types/robots/cloudflare-store.ts +37 -77
  542. package/src/alphalib/types/robots/digitalocean-import.ts +35 -75
  543. package/src/alphalib/types/robots/digitalocean-store.ts +35 -79
  544. package/src/alphalib/types/robots/document-autorotate.ts +36 -58
  545. package/src/alphalib/types/robots/document-convert.ts +37 -59
  546. package/src/alphalib/types/robots/document-extract.ts +45 -62
  547. package/src/alphalib/types/robots/document-merge.ts +25 -47
  548. package/src/alphalib/types/robots/document-ocr.ts +32 -70
  549. package/src/alphalib/types/robots/document-optimize.ts +38 -57
  550. package/src/alphalib/types/robots/document-split.ts +33 -56
  551. package/src/alphalib/types/robots/document-thumbs.ts +66 -67
  552. package/src/alphalib/types/robots/dropbox-import.ts +27 -57
  553. package/src/alphalib/types/robots/dropbox-store.ts +39 -65
  554. package/src/alphalib/types/robots/edgly-deliver.ts +26 -49
  555. package/src/alphalib/types/robots/file-compress.ts +31 -45
  556. package/src/alphalib/types/robots/file-decompress.ts +41 -68
  557. package/src/alphalib/types/robots/file-filter.ts +36 -65
  558. package/src/alphalib/types/robots/file-hash.ts +37 -64
  559. package/src/alphalib/types/robots/file-preview.ts +39 -65
  560. package/src/alphalib/types/robots/file-read.ts +33 -50
  561. package/src/alphalib/types/robots/file-serve.ts +32 -46
  562. package/src/alphalib/types/robots/file-verify.ts +37 -63
  563. package/src/alphalib/types/robots/file-virusscan.ts +49 -67
  564. package/src/alphalib/types/robots/file-watermark.ts +35 -54
  565. package/src/alphalib/types/robots/ftp-import.ts +26 -54
  566. package/src/alphalib/types/robots/ftp-store.ts +44 -63
  567. package/src/alphalib/types/robots/google-import.ts +32 -66
  568. package/src/alphalib/types/robots/google-store.ts +37 -63
  569. package/src/alphalib/types/robots/html-convert.ts +38 -49
  570. package/src/alphalib/types/robots/http-import.ts +21 -19
  571. package/src/alphalib/types/robots/http-request.ts +196 -0
  572. package/src/alphalib/types/robots/image-bgremove.ts +28 -55
  573. package/src/alphalib/types/robots/image-copyrightdetect.ts +38 -56
  574. package/src/alphalib/types/robots/image-describe.ts +31 -60
  575. package/src/alphalib/types/robots/image-enhance.ts +30 -56
  576. package/src/alphalib/types/robots/image-facedetect.ts +43 -71
  577. package/src/alphalib/types/robots/image-generate.ts +29 -22
  578. package/src/alphalib/types/robots/image-merge.ts +34 -65
  579. package/src/alphalib/types/robots/image-ocr.ts +33 -69
  580. package/src/alphalib/types/robots/image-optimize.ts +28 -54
  581. package/src/alphalib/types/robots/image-resize.ts +72 -96
  582. package/src/alphalib/types/robots/image-upscale.ts +52 -64
  583. package/src/alphalib/types/robots/mega-import.ts +36 -84
  584. package/src/alphalib/types/robots/mega-store.ts +44 -81
  585. package/src/alphalib/types/robots/meta-read.ts +21 -36
  586. package/src/alphalib/types/robots/meta-write.ts +35 -53
  587. package/src/alphalib/types/robots/minio-import.ts +34 -86
  588. package/src/alphalib/types/robots/minio-store.ts +37 -72
  589. package/src/alphalib/types/robots/progress-simulate.ts +14 -28
  590. package/src/alphalib/types/robots/s3-import.ts +32 -63
  591. package/src/alphalib/types/robots/s3-store.ts +53 -74
  592. package/src/alphalib/types/robots/script-run.ts +44 -55
  593. package/src/alphalib/types/robots/sftp-import.ts +34 -61
  594. package/src/alphalib/types/robots/sftp-store.ts +42 -65
  595. package/src/alphalib/types/robots/speech-transcribe.ts +53 -71
  596. package/src/alphalib/types/robots/supabase-import.ts +37 -84
  597. package/src/alphalib/types/robots/supabase-store.ts +41 -78
  598. package/src/alphalib/types/robots/swift-import.ts +38 -80
  599. package/src/alphalib/types/robots/swift-store.ts +44 -84
  600. package/src/alphalib/types/robots/text-speak.ts +36 -62
  601. package/src/alphalib/types/robots/text-translate.ts +35 -62
  602. package/src/alphalib/types/robots/tigris-import.ts +34 -86
  603. package/src/alphalib/types/robots/tigris-store.ts +35 -70
  604. package/src/alphalib/types/robots/tlcdn-deliver.ts +23 -47
  605. package/src/alphalib/types/robots/transloadit-import.ts +24 -29
  606. package/src/alphalib/types/robots/transloadit-store.ts +20 -7
  607. package/src/alphalib/types/robots/tus-store.ts +34 -58
  608. package/src/alphalib/types/robots/upload-handle.ts +23 -41
  609. package/src/alphalib/types/robots/video-adaptive.ts +28 -51
  610. package/src/alphalib/types/robots/video-artwork.ts +28 -54
  611. package/src/alphalib/types/robots/video-concat.ts +29 -52
  612. package/src/alphalib/types/robots/video-encode.ts +39 -62
  613. package/src/alphalib/types/robots/video-generate.ts +20 -18
  614. package/src/alphalib/types/robots/video-merge.ts +36 -55
  615. package/src/alphalib/types/robots/video-ondemand.ts +48 -62
  616. package/src/alphalib/types/robots/video-split.ts +32 -61
  617. package/src/alphalib/types/robots/video-subtitle.ts +30 -52
  618. package/src/alphalib/types/robots/video-thumbs.ts +74 -78
  619. package/src/alphalib/types/robots/vimeo-import.ts +12 -17
  620. package/src/alphalib/types/robots/vimeo-store.ts +46 -65
  621. package/src/alphalib/types/robots/wasabi-import.ts +33 -81
  622. package/src/alphalib/types/robots/wasabi-store.ts +38 -74
  623. package/src/alphalib/types/robots/youtube-store.ts +81 -91
  624. package/src/alphalib/types/stackVersions.ts +26 -3
  625. package/src/alphalib/types/storageAsset.ts +84 -36
  626. package/src/alphalib/types/storageResults.ts +75 -0
  627. package/src/alphalib/types/utility.ts +52 -0
  628. package/src/storageResults.ts +19 -56
@@ -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
+ }