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.
- package/README.md +44 -4
- package/dist/ApiError.d.ts +6 -2
- package/dist/ApiError.d.ts.map +1 -1
- package/dist/ApiError.js +6 -2
- package/dist/ApiError.js.map +1 -1
- package/dist/Transloadit.d.ts.map +1 -1
- package/dist/Transloadit.js +3 -2
- package/dist/Transloadit.js.map +1 -1
- package/dist/alphalib/aiMessages.d.ts +33254 -0
- package/dist/alphalib/aiMessages.d.ts.map +1 -0
- package/dist/alphalib/aiMessages.js +479 -0
- package/dist/alphalib/aiMessages.js.map +1 -0
- package/dist/alphalib/assembly-linter.d.ts.map +1 -1
- package/dist/alphalib/assembly-linter.js +20 -15
- package/dist/alphalib/assembly-linter.js.map +1 -1
- package/dist/alphalib/englishList.d.ts +3 -0
- package/dist/alphalib/englishList.d.ts.map +1 -0
- package/dist/alphalib/englishList.js +12 -0
- package/dist/alphalib/englishList.js.map +1 -0
- package/dist/alphalib/errors.d.ts +16 -0
- package/dist/alphalib/errors.d.ts.map +1 -1
- package/dist/alphalib/errors.js +124 -13
- package/dist/alphalib/errors.js.map +1 -1
- package/dist/alphalib/imagemagickDensity.d.ts.map +1 -1
- package/dist/alphalib/imagemagickDensity.js +2 -2
- package/dist/alphalib/imagemagickDensity.js.map +1 -1
- package/dist/alphalib/lib/zodInputSemantics.d.ts +18 -0
- package/dist/alphalib/lib/zodInputSemantics.d.ts.map +1 -0
- package/dist/alphalib/lib/zodInputSemantics.js +86 -0
- package/dist/alphalib/lib/zodInputSemantics.js.map +1 -0
- package/dist/alphalib/object.d.ts +42 -2
- package/dist/alphalib/object.d.ts.map +1 -1
- package/dist/alphalib/object.js +133 -0
- package/dist/alphalib/object.js.map +1 -1
- package/dist/alphalib/stepParsing.d.ts +1 -0
- package/dist/alphalib/stepParsing.d.ts.map +1 -1
- package/dist/alphalib/stepParsing.js +9 -1
- package/dist/alphalib/stepParsing.js.map +1 -1
- package/dist/alphalib/types/apiParameterDescription.d.ts +14 -0
- package/dist/alphalib/types/apiParameterDescription.d.ts.map +1 -0
- package/dist/alphalib/types/apiParameterDescription.js +20 -0
- package/dist/alphalib/types/apiParameterDescription.js.map +1 -0
- package/dist/alphalib/types/assembliesGet.d.ts +1 -1
- package/dist/alphalib/types/assemblyReplay.d.ts +4 -4
- package/dist/alphalib/types/assemblyStatus.d.ts +6718 -64966
- package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
- package/dist/alphalib/types/assemblyStatus.js +68 -55
- package/dist/alphalib/types/assemblyStatus.js.map +1 -1
- package/dist/alphalib/types/errorReason.d.ts +7 -0
- package/dist/alphalib/types/errorReason.d.ts.map +1 -0
- package/dist/alphalib/types/errorReason.js +14 -0
- package/dist/alphalib/types/errorReason.js.map +1 -0
- package/dist/alphalib/types/file.d.ts +7 -0
- package/dist/alphalib/types/file.d.ts.map +1 -1
- package/dist/alphalib/types/file.js +15 -0
- package/dist/alphalib/types/file.js.map +1 -1
- package/dist/alphalib/types/fileHash.d.ts +16 -0
- package/dist/alphalib/types/fileHash.d.ts.map +1 -0
- package/dist/alphalib/types/fileHash.js +10 -0
- package/dist/alphalib/types/fileHash.js.map +1 -0
- package/dist/alphalib/types/responseErrors/HttpImportRobot.d.ts +23 -0
- package/dist/alphalib/types/responseErrors/HttpImportRobot.d.ts.map +1 -0
- package/dist/alphalib/types/responseErrors/HttpImportRobot.js +23 -0
- package/dist/alphalib/types/responseErrors/HttpImportRobot.js.map +1 -0
- package/dist/alphalib/types/robots/_ai-models.d.ts +28 -0
- package/dist/alphalib/types/robots/_ai-models.d.ts.map +1 -0
- package/dist/alphalib/types/robots/_ai-models.js +80 -0
- package/dist/alphalib/types/robots/_ai-models.js.map +1 -0
- package/dist/alphalib/types/robots/_index.d.ts +713 -1329
- package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
- package/dist/alphalib/types/robots/_index.js +4 -0
- package/dist/alphalib/types/robots/_index.js.map +1 -1
- package/dist/alphalib/types/robots/_instructions-primitives.d.ts +504 -129
- package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
- package/dist/alphalib/types/robots/_instructions-primitives.js +627 -280
- package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
- package/dist/alphalib/types/robots/ai-chat.d.ts +952 -2189
- package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
- package/dist/alphalib/types/robots/ai-chat.js +235 -368
- package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
- package/dist/alphalib/types/robots/assembly-savejson.d.ts +28 -16
- package/dist/alphalib/types/robots/assembly-savejson.d.ts.map +1 -1
- package/dist/alphalib/types/robots/assembly-savejson.js +2 -11
- package/dist/alphalib/types/robots/assembly-savejson.js.map +1 -1
- package/dist/alphalib/types/robots/audio-artwork.d.ts +80 -67
- package/dist/alphalib/types/robots/audio-artwork.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-artwork.js +9 -38
- package/dist/alphalib/types/robots/audio-artwork.js.map +1 -1
- package/dist/alphalib/types/robots/audio-concat.d.ts +94 -81
- package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-concat.js +11 -25
- package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
- package/dist/alphalib/types/robots/audio-encode.d.ts +80 -67
- package/dist/alphalib/types/robots/audio-encode.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-encode.js +13 -43
- package/dist/alphalib/types/robots/audio-encode.js.map +1 -1
- package/dist/alphalib/types/robots/audio-loop.d.ts +80 -67
- package/dist/alphalib/types/robots/audio-loop.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-loop.js +12 -40
- package/dist/alphalib/types/robots/audio-loop.js.map +1 -1
- package/dist/alphalib/types/robots/audio-merge.d.ts +94 -81
- package/dist/alphalib/types/robots/audio-merge.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-merge.js +11 -25
- package/dist/alphalib/types/robots/audio-merge.js.map +1 -1
- package/dist/alphalib/types/robots/audio-split.d.ts +80 -67
- package/dist/alphalib/types/robots/audio-split.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-split.js +15 -45
- package/dist/alphalib/types/robots/audio-split.js.map +1 -1
- package/dist/alphalib/types/robots/audio-waveform.d.ts +120 -107
- package/dist/alphalib/types/robots/audio-waveform.d.ts.map +1 -1
- package/dist/alphalib/types/robots/audio-waveform.js +15 -39
- package/dist/alphalib/types/robots/audio-waveform.js.map +1 -1
- package/dist/alphalib/types/robots/azure-import.d.ts +48 -35
- package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/azure-import.js +5 -35
- package/dist/alphalib/types/robots/azure-import.js.map +1 -1
- package/dist/alphalib/types/robots/azure-store.d.ts +87 -71
- package/dist/alphalib/types/robots/azure-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/azure-store.js +11 -50
- package/dist/alphalib/types/robots/azure-store.js.map +1 -1
- package/dist/alphalib/types/robots/backblaze-import.d.ts +48 -35
- package/dist/alphalib/types/robots/backblaze-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/backblaze-import.js +6 -39
- package/dist/alphalib/types/robots/backblaze-import.js.map +1 -1
- package/dist/alphalib/types/robots/backblaze-store.d.ts +80 -67
- package/dist/alphalib/types/robots/backblaze-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/backblaze-store.js +8 -44
- package/dist/alphalib/types/robots/backblaze-store.js.map +1 -1
- package/dist/alphalib/types/robots/box-import.d.ts +44 -27
- package/dist/alphalib/types/robots/box-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/box-import.js +7 -33
- package/dist/alphalib/types/robots/box-import.js.map +1 -1
- package/dist/alphalib/types/robots/box-store.d.ts +85 -68
- package/dist/alphalib/types/robots/box-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/box-store.js +8 -40
- package/dist/alphalib/types/robots/box-store.js.map +1 -1
- package/dist/alphalib/types/robots/cloudfiles-import.d.ts +48 -35
- package/dist/alphalib/types/robots/cloudfiles-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/cloudfiles-import.js +8 -45
- package/dist/alphalib/types/robots/cloudfiles-import.js.map +1 -1
- package/dist/alphalib/types/robots/cloudfiles-store.d.ts +80 -67
- package/dist/alphalib/types/robots/cloudfiles-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/cloudfiles-store.js +5 -36
- package/dist/alphalib/types/robots/cloudfiles-store.js.map +1 -1
- package/dist/alphalib/types/robots/cloudflare-import.d.ts +48 -35
- package/dist/alphalib/types/robots/cloudflare-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/cloudflare-import.js +10 -57
- package/dist/alphalib/types/robots/cloudflare-import.js.map +1 -1
- package/dist/alphalib/types/robots/cloudflare-store.d.ts +80 -67
- package/dist/alphalib/types/robots/cloudflare-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/cloudflare-store.js +11 -54
- package/dist/alphalib/types/robots/cloudflare-store.js.map +1 -1
- package/dist/alphalib/types/robots/digitalocean-import.d.ts +56 -43
- package/dist/alphalib/types/robots/digitalocean-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/digitalocean-import.js +8 -49
- package/dist/alphalib/types/robots/digitalocean-import.js.map +1 -1
- package/dist/alphalib/types/robots/digitalocean-store.d.ts +88 -75
- package/dist/alphalib/types/robots/digitalocean-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/digitalocean-store.js +8 -56
- package/dist/alphalib/types/robots/digitalocean-store.js.map +1 -1
- package/dist/alphalib/types/robots/document-autorotate.d.ts +80 -67
- package/dist/alphalib/types/robots/document-autorotate.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-autorotate.js +5 -32
- package/dist/alphalib/types/robots/document-autorotate.js.map +1 -1
- package/dist/alphalib/types/robots/document-convert.d.ts +84 -71
- package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-convert.js +7 -33
- package/dist/alphalib/types/robots/document-convert.js.map +1 -1
- package/dist/alphalib/types/robots/document-extract.d.ts +80 -67
- package/dist/alphalib/types/robots/document-extract.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-extract.js +10 -36
- package/dist/alphalib/types/robots/document-extract.js.map +1 -1
- package/dist/alphalib/types/robots/document-merge.d.ts +80 -67
- package/dist/alphalib/types/robots/document-merge.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-merge.js +4 -25
- package/dist/alphalib/types/robots/document-merge.js.map +1 -1
- package/dist/alphalib/types/robots/document-ocr.d.ts +80 -67
- package/dist/alphalib/types/robots/document-ocr.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-ocr.js +10 -47
- package/dist/alphalib/types/robots/document-ocr.js.map +1 -1
- package/dist/alphalib/types/robots/document-optimize.d.ts +80 -67
- package/dist/alphalib/types/robots/document-optimize.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-optimize.js +7 -31
- package/dist/alphalib/types/robots/document-optimize.js.map +1 -1
- package/dist/alphalib/types/robots/document-split.d.ts +80 -67
- package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-split.js +7 -34
- package/dist/alphalib/types/robots/document-split.js.map +1 -1
- package/dist/alphalib/types/robots/document-thumbs.d.ts +120 -101
- package/dist/alphalib/types/robots/document-thumbs.d.ts.map +1 -1
- package/dist/alphalib/types/robots/document-thumbs.js +24 -31
- package/dist/alphalib/types/robots/document-thumbs.js.map +1 -1
- package/dist/alphalib/types/robots/dropbox-import.d.ts +40 -27
- package/dist/alphalib/types/robots/dropbox-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/dropbox-import.js +5 -35
- package/dist/alphalib/types/robots/dropbox-import.js.map +1 -1
- package/dist/alphalib/types/robots/dropbox-store.d.ts +84 -68
- package/dist/alphalib/types/robots/dropbox-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/dropbox-store.js +8 -42
- package/dist/alphalib/types/robots/dropbox-store.js.map +1 -1
- package/dist/alphalib/types/robots/edgly-deliver.d.ts +32 -19
- package/dist/alphalib/types/robots/edgly-deliver.d.ts.map +1 -1
- package/dist/alphalib/types/robots/edgly-deliver.js +4 -24
- package/dist/alphalib/types/robots/edgly-deliver.js.map +1 -1
- package/dist/alphalib/types/robots/file-compress.d.ts +80 -67
- package/dist/alphalib/types/robots/file-compress.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-compress.js +4 -20
- package/dist/alphalib/types/robots/file-compress.js.map +1 -1
- package/dist/alphalib/types/robots/file-decompress.d.ts +96 -83
- package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-decompress.js +10 -41
- package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
- package/dist/alphalib/types/robots/file-filter.d.ts +99 -87
- package/dist/alphalib/types/robots/file-filter.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-filter.js +11 -40
- package/dist/alphalib/types/robots/file-filter.js.map +1 -1
- package/dist/alphalib/types/robots/file-hash.d.ts +84 -71
- package/dist/alphalib/types/robots/file-hash.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-hash.js +12 -43
- package/dist/alphalib/types/robots/file-hash.js.map +1 -1
- package/dist/alphalib/types/robots/file-preview.d.ts +113 -100
- package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-preview.js +14 -39
- package/dist/alphalib/types/robots/file-preview.js.map +1 -1
- package/dist/alphalib/types/robots/file-read.d.ts +80 -67
- package/dist/alphalib/types/robots/file-read.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-read.js +5 -26
- package/dist/alphalib/types/robots/file-read.js.map +1 -1
- package/dist/alphalib/types/robots/file-serve.d.ts +81 -68
- package/dist/alphalib/types/robots/file-serve.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-serve.js +4 -21
- package/dist/alphalib/types/robots/file-serve.js.map +1 -1
- package/dist/alphalib/types/robots/file-verify.d.ts +88 -75
- package/dist/alphalib/types/robots/file-verify.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-verify.js +11 -41
- package/dist/alphalib/types/robots/file-verify.js.map +1 -1
- package/dist/alphalib/types/robots/file-virusscan.d.ts +83 -67
- package/dist/alphalib/types/robots/file-virusscan.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-virusscan.js +16 -42
- package/dist/alphalib/types/robots/file-virusscan.js.map +1 -1
- package/dist/alphalib/types/robots/file-watermark.d.ts +81 -67
- package/dist/alphalib/types/robots/file-watermark.d.ts.map +1 -1
- package/dist/alphalib/types/robots/file-watermark.js +10 -29
- package/dist/alphalib/types/robots/file-watermark.js.map +1 -1
- package/dist/alphalib/types/robots/ftp-import.d.ts +40 -27
- package/dist/alphalib/types/robots/ftp-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/ftp-import.js +5 -33
- package/dist/alphalib/types/robots/ftp-import.js.map +1 -1
- package/dist/alphalib/types/robots/ftp-store.d.ts +85 -67
- package/dist/alphalib/types/robots/ftp-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/ftp-store.js +7 -34
- package/dist/alphalib/types/robots/ftp-store.js.map +1 -1
- package/dist/alphalib/types/robots/google-import.d.ts +48 -35
- package/dist/alphalib/types/robots/google-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/google-import.js +10 -43
- package/dist/alphalib/types/robots/google-import.js.map +1 -1
- package/dist/alphalib/types/robots/google-store.d.ts +80 -67
- package/dist/alphalib/types/robots/google-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/google-store.js +10 -41
- package/dist/alphalib/types/robots/google-store.js.map +1 -1
- package/dist/alphalib/types/robots/html-convert.d.ts +107 -89
- package/dist/alphalib/types/robots/html-convert.d.ts.map +1 -1
- package/dist/alphalib/types/robots/html-convert.js +6 -22
- package/dist/alphalib/types/robots/html-convert.js.map +1 -1
- package/dist/alphalib/types/robots/http-import.d.ts +76 -63
- package/dist/alphalib/types/robots/http-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/http-import.js +14 -19
- package/dist/alphalib/types/robots/http-import.js.map +1 -1
- package/dist/alphalib/types/robots/http-request.d.ts +538 -0
- package/dist/alphalib/types/robots/http-request.d.ts.map +1 -0
- package/dist/alphalib/types/robots/http-request.js +162 -0
- package/dist/alphalib/types/robots/http-request.js.map +1 -0
- package/dist/alphalib/types/robots/image-bgremove.d.ts +80 -67
- package/dist/alphalib/types/robots/image-bgremove.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-bgremove.js +6 -33
- package/dist/alphalib/types/robots/image-bgremove.js.map +1 -1
- package/dist/alphalib/types/robots/image-copyrightdetect.d.ts +92 -79
- package/dist/alphalib/types/robots/image-copyrightdetect.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-copyrightdetect.js +9 -33
- package/dist/alphalib/types/robots/image-copyrightdetect.js.map +1 -1
- package/dist/alphalib/types/robots/image-describe.d.ts +80 -67
- package/dist/alphalib/types/robots/image-describe.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-describe.js +8 -37
- package/dist/alphalib/types/robots/image-describe.js.map +1 -1
- package/dist/alphalib/types/robots/image-enhance.d.ts +80 -67
- package/dist/alphalib/types/robots/image-enhance.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-enhance.js +7 -31
- package/dist/alphalib/types/robots/image-enhance.js.map +1 -1
- package/dist/alphalib/types/robots/image-facedetect.d.ts +88 -75
- package/dist/alphalib/types/robots/image-facedetect.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-facedetect.js +16 -44
- package/dist/alphalib/types/robots/image-facedetect.js.map +1 -1
- package/dist/alphalib/types/robots/image-generate.d.ts +96 -86
- package/dist/alphalib/types/robots/image-generate.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-generate.js +17 -22
- package/dist/alphalib/types/robots/image-generate.js.map +1 -1
- package/dist/alphalib/types/robots/image-merge.d.ts +96 -83
- package/dist/alphalib/types/robots/image-merge.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-merge.js +9 -40
- package/dist/alphalib/types/robots/image-merge.js.map +1 -1
- package/dist/alphalib/types/robots/image-ocr.d.ts +80 -67
- package/dist/alphalib/types/robots/image-ocr.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-ocr.js +11 -47
- package/dist/alphalib/types/robots/image-ocr.js.map +1 -1
- package/dist/alphalib/types/robots/image-optimize.d.ts +88 -75
- package/dist/alphalib/types/robots/image-optimize.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-optimize.js +6 -32
- package/dist/alphalib/types/robots/image-optimize.js.map +1 -1
- package/dist/alphalib/types/robots/image-resize.d.ts +217 -112
- package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-resize.js +15 -42
- package/dist/alphalib/types/robots/image-resize.js.map +1 -1
- package/dist/alphalib/types/robots/image-upscale.d.ts +97 -81
- package/dist/alphalib/types/robots/image-upscale.d.ts.map +1 -1
- package/dist/alphalib/types/robots/image-upscale.js +23 -42
- package/dist/alphalib/types/robots/image-upscale.js.map +1 -1
- package/dist/alphalib/types/robots/mega-import.d.ts +48 -35
- package/dist/alphalib/types/robots/mega-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/mega-import.js +12 -59
- package/dist/alphalib/types/robots/mega-import.js.map +1 -1
- package/dist/alphalib/types/robots/mega-store.d.ts +80 -67
- package/dist/alphalib/types/robots/mega-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/mega-store.js +14 -60
- package/dist/alphalib/types/robots/mega-store.js.map +1 -1
- package/dist/alphalib/types/robots/meta-read.d.ts +30 -16
- package/dist/alphalib/types/robots/meta-read.d.ts.map +1 -1
- package/dist/alphalib/types/robots/meta-read.js +4 -20
- package/dist/alphalib/types/robots/meta-read.js.map +1 -1
- package/dist/alphalib/types/robots/meta-write.d.ts +80 -67
- package/dist/alphalib/types/robots/meta-write.d.ts.map +1 -1
- package/dist/alphalib/types/robots/meta-write.js +9 -32
- package/dist/alphalib/types/robots/meta-write.js.map +1 -1
- package/dist/alphalib/types/robots/minio-import.d.ts +48 -35
- package/dist/alphalib/types/robots/minio-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/minio-import.js +9 -60
- package/dist/alphalib/types/robots/minio-import.js.map +1 -1
- package/dist/alphalib/types/robots/minio-store.d.ts +80 -67
- package/dist/alphalib/types/robots/minio-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/minio-store.js +9 -50
- package/dist/alphalib/types/robots/minio-store.js.map +1 -1
- package/dist/alphalib/types/robots/progress-simulate.d.ts +34 -28
- package/dist/alphalib/types/robots/progress-simulate.d.ts.map +1 -1
- package/dist/alphalib/types/robots/progress-simulate.js +8 -28
- package/dist/alphalib/types/robots/progress-simulate.js.map +1 -1
- package/dist/alphalib/types/robots/s3-import.d.ts +48 -35
- package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/s3-import.js +7 -38
- package/dist/alphalib/types/robots/s3-import.js.map +1 -1
- package/dist/alphalib/types/robots/s3-store.d.ts +84 -68
- package/dist/alphalib/types/robots/s3-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/s3-store.js +14 -44
- package/dist/alphalib/types/robots/s3-store.js.map +1 -1
- package/dist/alphalib/types/robots/script-run.d.ts +83 -67
- package/dist/alphalib/types/robots/script-run.d.ts.map +1 -1
- package/dist/alphalib/types/robots/script-run.js +9 -27
- package/dist/alphalib/types/robots/script-run.js.map +1 -1
- package/dist/alphalib/types/robots/sftp-import.d.ts +51 -35
- package/dist/alphalib/types/robots/sftp-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/sftp-import.js +7 -36
- package/dist/alphalib/types/robots/sftp-import.js.map +1 -1
- package/dist/alphalib/types/robots/sftp-store.d.ts +83 -67
- package/dist/alphalib/types/robots/sftp-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/sftp-store.js +9 -41
- package/dist/alphalib/types/robots/sftp-store.js.map +1 -1
- package/dist/alphalib/types/robots/speech-transcribe.d.ts +102 -85
- package/dist/alphalib/types/robots/speech-transcribe.d.ts.map +1 -1
- package/dist/alphalib/types/robots/speech-transcribe.js +23 -44
- package/dist/alphalib/types/robots/speech-transcribe.js.map +1 -1
- package/dist/alphalib/types/robots/supabase-import.d.ts +48 -35
- package/dist/alphalib/types/robots/supabase-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/supabase-import.js +12 -59
- package/dist/alphalib/types/robots/supabase-import.js.map +1 -1
- package/dist/alphalib/types/robots/supabase-store.d.ts +80 -79
- package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/supabase-store.js +12 -56
- package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
- package/dist/alphalib/types/robots/swift-import.d.ts +48 -47
- package/dist/alphalib/types/robots/swift-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/swift-import.js +14 -55
- package/dist/alphalib/types/robots/swift-import.js.map +1 -1
- package/dist/alphalib/types/robots/swift-store.d.ts +80 -79
- package/dist/alphalib/types/robots/swift-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/swift-store.js +14 -62
- package/dist/alphalib/types/robots/swift-store.js.map +1 -1
- package/dist/alphalib/types/robots/text-speak.d.ts +80 -67
- package/dist/alphalib/types/robots/text-speak.d.ts.map +1 -1
- package/dist/alphalib/types/robots/text-speak.js +11 -37
- package/dist/alphalib/types/robots/text-speak.js.map +1 -1
- package/dist/alphalib/types/robots/text-translate.d.ts +92 -79
- package/dist/alphalib/types/robots/text-translate.d.ts.map +1 -1
- package/dist/alphalib/types/robots/text-translate.js +9 -36
- package/dist/alphalib/types/robots/text-translate.js.map +1 -1
- package/dist/alphalib/types/robots/tigris-import.d.ts +48 -35
- package/dist/alphalib/types/robots/tigris-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/tigris-import.js +9 -60
- package/dist/alphalib/types/robots/tigris-import.js.map +1 -1
- package/dist/alphalib/types/robots/tigris-store.d.ts +80 -67
- package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/tigris-store.js +7 -48
- package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
- package/dist/alphalib/types/robots/tlcdn-deliver.d.ts +32 -19
- package/dist/alphalib/types/robots/tlcdn-deliver.d.ts.map +1 -1
- package/dist/alphalib/types/robots/tlcdn-deliver.js +4 -25
- package/dist/alphalib/types/robots/tlcdn-deliver.js.map +1 -1
- package/dist/alphalib/types/robots/transloadit-import.d.ts +58 -45
- package/dist/alphalib/types/robots/transloadit-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/transloadit-import.js +17 -21
- package/dist/alphalib/types/robots/transloadit-import.js.map +1 -1
- package/dist/alphalib/types/robots/transloadit-store.d.ts +70 -57
- package/dist/alphalib/types/robots/transloadit-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/transloadit-store.js +14 -6
- package/dist/alphalib/types/robots/transloadit-store.js.map +1 -1
- package/dist/alphalib/types/robots/tus-store.d.ts +84 -71
- package/dist/alphalib/types/robots/tus-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/tus-store.js +8 -37
- package/dist/alphalib/types/robots/tus-store.js.map +1 -1
- package/dist/alphalib/types/robots/upload-handle.d.ts +32 -19
- package/dist/alphalib/types/robots/upload-handle.d.ts.map +1 -1
- package/dist/alphalib/types/robots/upload-handle.js +4 -19
- package/dist/alphalib/types/robots/upload-handle.js.map +1 -1
- package/dist/alphalib/types/robots/video-adaptive.d.ts +112 -99
- package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-adaptive.js +4 -26
- package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
- package/dist/alphalib/types/robots/video-artwork.d.ts +80 -67
- package/dist/alphalib/types/robots/video-artwork.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-artwork.js +7 -32
- package/dist/alphalib/types/robots/video-artwork.js.map +1 -1
- package/dist/alphalib/types/robots/video-concat.d.ts +104 -91
- package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-concat.js +6 -27
- package/dist/alphalib/types/robots/video-concat.js.map +1 -1
- package/dist/alphalib/types/robots/video-encode.d.ts +121 -103
- package/dist/alphalib/types/robots/video-encode.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-encode.js +13 -38
- package/dist/alphalib/types/robots/video-encode.js.map +1 -1
- package/dist/alphalib/types/robots/video-generate.d.ts +96 -86
- package/dist/alphalib/types/robots/video-generate.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-generate.js +11 -18
- package/dist/alphalib/types/robots/video-generate.js.map +1 -1
- package/dist/alphalib/types/robots/video-merge.d.ts +135 -119
- package/dist/alphalib/types/robots/video-merge.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-merge.js +12 -32
- package/dist/alphalib/types/robots/video-merge.js.map +1 -1
- package/dist/alphalib/types/robots/video-ondemand.d.ts +156 -139
- package/dist/alphalib/types/robots/video-ondemand.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-ondemand.js +11 -27
- package/dist/alphalib/types/robots/video-ondemand.js.map +1 -1
- package/dist/alphalib/types/robots/video-split.d.ts +104 -91
- package/dist/alphalib/types/robots/video-split.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-split.js +11 -39
- package/dist/alphalib/types/robots/video-split.js.map +1 -1
- package/dist/alphalib/types/robots/video-subtitle.d.ts +104 -91
- package/dist/alphalib/types/robots/video-subtitle.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-subtitle.js +7 -30
- package/dist/alphalib/types/robots/video-subtitle.js.map +1 -1
- package/dist/alphalib/types/robots/video-thumbs.d.ts +112 -95
- package/dist/alphalib/types/robots/video-thumbs.d.ts.map +1 -1
- package/dist/alphalib/types/robots/video-thumbs.js +46 -53
- package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
- package/dist/alphalib/types/robots/vimeo-import.d.ts +30 -17
- package/dist/alphalib/types/robots/vimeo-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/vimeo-import.js +7 -17
- package/dist/alphalib/types/robots/vimeo-import.js.map +1 -1
- package/dist/alphalib/types/robots/vimeo-store.d.ts +83 -67
- package/dist/alphalib/types/robots/vimeo-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/vimeo-store.js +11 -37
- package/dist/alphalib/types/robots/vimeo-store.js.map +1 -1
- package/dist/alphalib/types/robots/wasabi-import.d.ts +48 -35
- package/dist/alphalib/types/robots/wasabi-import.d.ts.map +1 -1
- package/dist/alphalib/types/robots/wasabi-import.js +9 -56
- package/dist/alphalib/types/robots/wasabi-import.js.map +1 -1
- package/dist/alphalib/types/robots/wasabi-store.d.ts +80 -67
- package/dist/alphalib/types/robots/wasabi-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/wasabi-store.js +10 -52
- package/dist/alphalib/types/robots/wasabi-store.js.map +1 -1
- package/dist/alphalib/types/robots/youtube-store.d.ts +98 -85
- package/dist/alphalib/types/robots/youtube-store.d.ts.map +1 -1
- package/dist/alphalib/types/robots/youtube-store.js +42 -63
- package/dist/alphalib/types/robots/youtube-store.js.map +1 -1
- package/dist/alphalib/types/stackVersions.d.ts +40 -1
- package/dist/alphalib/types/stackVersions.d.ts.map +1 -1
- package/dist/alphalib/types/stackVersions.js +25 -3
- package/dist/alphalib/types/stackVersions.js.map +1 -1
- package/dist/alphalib/types/storageAsset.d.ts +28 -22
- package/dist/alphalib/types/storageAsset.d.ts.map +1 -1
- package/dist/alphalib/types/storageAsset.js +30 -12
- package/dist/alphalib/types/storageAsset.js.map +1 -1
- package/dist/alphalib/types/storageResults.d.ts +29 -0
- package/dist/alphalib/types/storageResults.d.ts.map +1 -0
- package/dist/alphalib/types/storageResults.js +53 -0
- package/dist/alphalib/types/storageResults.js.map +1 -0
- package/dist/alphalib/types/template.d.ts +16 -16
- package/dist/alphalib/types/templateCredential.d.ts +2 -2
- package/dist/alphalib/types/utility.d.ts +22 -0
- package/dist/alphalib/types/utility.d.ts.map +1 -0
- package/dist/alphalib/types/utility.js +2 -0
- package/dist/alphalib/types/utility.js.map +1 -0
- package/dist/storageResults.d.ts +2 -13
- package/dist/storageResults.d.ts.map +1 -1
- package/dist/storageResults.js +9 -34
- package/dist/storageResults.js.map +1 -1
- package/package.json +1 -2
- package/src/ApiError.ts +11 -4
- package/src/Transloadit.ts +6 -3
- package/src/alphalib/aiMessages.ts +554 -0
- package/src/alphalib/assembly-linter.ts +9 -2
- package/src/alphalib/englishList.ts +11 -0
- package/src/alphalib/errors.ts +159 -13
- package/src/alphalib/imagemagickDensity.ts +2 -1
- package/src/alphalib/lib/zodInputSemantics.ts +114 -0
- package/src/alphalib/object.ts +178 -3
- package/src/alphalib/stepParsing.ts +10 -2
- package/src/alphalib/types/apiParameterDescription.ts +41 -0
- package/src/alphalib/types/assemblyStatus.ts +115 -83
- package/src/alphalib/types/errorReason.ts +14 -0
- package/src/alphalib/types/file.ts +18 -0
- package/src/alphalib/types/fileHash.ts +10 -0
- package/src/alphalib/types/responseErrors/HttpImportRobot.ts +22 -0
- package/src/alphalib/types/robots/_ai-models.ts +91 -0
- package/src/alphalib/types/robots/_index.ts +14 -0
- package/src/alphalib/types/robots/_instructions-primitives.ts +839 -308
- package/src/alphalib/types/robots/ai-chat.ts +358 -460
- package/src/alphalib/types/robots/assembly-savejson.ts +2 -11
- package/src/alphalib/types/robots/audio-artwork.ts +35 -61
- package/src/alphalib/types/robots/audio-concat.ts +17 -25
- package/src/alphalib/types/robots/audio-encode.ts +35 -65
- package/src/alphalib/types/robots/audio-loop.ts +34 -61
- package/src/alphalib/types/robots/audio-merge.ts +17 -25
- package/src/alphalib/types/robots/audio-split.ts +37 -67
- package/src/alphalib/types/robots/audio-waveform.ts +42 -65
- package/src/alphalib/types/robots/azure-import.ts +26 -57
- package/src/alphalib/types/robots/azure-store.ts +48 -72
- package/src/alphalib/types/robots/backblaze-import.ts +30 -63
- package/src/alphalib/types/robots/backblaze-store.ts +37 -66
- package/src/alphalib/types/robots/box-import.ts +32 -55
- package/src/alphalib/types/robots/box-store.ts +40 -63
- package/src/alphalib/types/robots/cloudfiles-import.ts +34 -70
- package/src/alphalib/types/robots/cloudfiles-store.ts +28 -59
- package/src/alphalib/types/robots/cloudflare-import.ts +37 -83
- package/src/alphalib/types/robots/cloudflare-store.ts +37 -77
- package/src/alphalib/types/robots/digitalocean-import.ts +35 -75
- package/src/alphalib/types/robots/digitalocean-store.ts +35 -79
- package/src/alphalib/types/robots/document-autorotate.ts +36 -58
- package/src/alphalib/types/robots/document-convert.ts +37 -59
- package/src/alphalib/types/robots/document-extract.ts +45 -62
- package/src/alphalib/types/robots/document-merge.ts +25 -47
- package/src/alphalib/types/robots/document-ocr.ts +32 -70
- package/src/alphalib/types/robots/document-optimize.ts +38 -57
- package/src/alphalib/types/robots/document-split.ts +33 -56
- package/src/alphalib/types/robots/document-thumbs.ts +66 -67
- package/src/alphalib/types/robots/dropbox-import.ts +27 -57
- package/src/alphalib/types/robots/dropbox-store.ts +39 -65
- package/src/alphalib/types/robots/edgly-deliver.ts +26 -49
- package/src/alphalib/types/robots/file-compress.ts +31 -45
- package/src/alphalib/types/robots/file-decompress.ts +41 -68
- package/src/alphalib/types/robots/file-filter.ts +36 -65
- package/src/alphalib/types/robots/file-hash.ts +37 -64
- package/src/alphalib/types/robots/file-preview.ts +39 -65
- package/src/alphalib/types/robots/file-read.ts +33 -50
- package/src/alphalib/types/robots/file-serve.ts +32 -46
- package/src/alphalib/types/robots/file-verify.ts +37 -63
- package/src/alphalib/types/robots/file-virusscan.ts +49 -67
- package/src/alphalib/types/robots/file-watermark.ts +35 -54
- package/src/alphalib/types/robots/ftp-import.ts +26 -54
- package/src/alphalib/types/robots/ftp-store.ts +44 -63
- package/src/alphalib/types/robots/google-import.ts +32 -66
- package/src/alphalib/types/robots/google-store.ts +37 -63
- package/src/alphalib/types/robots/html-convert.ts +38 -49
- package/src/alphalib/types/robots/http-import.ts +21 -19
- package/src/alphalib/types/robots/http-request.ts +196 -0
- package/src/alphalib/types/robots/image-bgremove.ts +28 -55
- package/src/alphalib/types/robots/image-copyrightdetect.ts +38 -56
- package/src/alphalib/types/robots/image-describe.ts +31 -60
- package/src/alphalib/types/robots/image-enhance.ts +30 -56
- package/src/alphalib/types/robots/image-facedetect.ts +43 -71
- package/src/alphalib/types/robots/image-generate.ts +29 -22
- package/src/alphalib/types/robots/image-merge.ts +34 -65
- package/src/alphalib/types/robots/image-ocr.ts +33 -69
- package/src/alphalib/types/robots/image-optimize.ts +28 -54
- package/src/alphalib/types/robots/image-resize.ts +72 -96
- package/src/alphalib/types/robots/image-upscale.ts +52 -64
- package/src/alphalib/types/robots/mega-import.ts +36 -84
- package/src/alphalib/types/robots/mega-store.ts +44 -81
- package/src/alphalib/types/robots/meta-read.ts +21 -36
- package/src/alphalib/types/robots/meta-write.ts +35 -53
- package/src/alphalib/types/robots/minio-import.ts +34 -86
- package/src/alphalib/types/robots/minio-store.ts +37 -72
- package/src/alphalib/types/robots/progress-simulate.ts +14 -28
- package/src/alphalib/types/robots/s3-import.ts +32 -63
- package/src/alphalib/types/robots/s3-store.ts +53 -74
- package/src/alphalib/types/robots/script-run.ts +44 -55
- package/src/alphalib/types/robots/sftp-import.ts +34 -61
- package/src/alphalib/types/robots/sftp-store.ts +42 -65
- package/src/alphalib/types/robots/speech-transcribe.ts +53 -71
- package/src/alphalib/types/robots/supabase-import.ts +37 -84
- package/src/alphalib/types/robots/supabase-store.ts +41 -78
- package/src/alphalib/types/robots/swift-import.ts +38 -80
- package/src/alphalib/types/robots/swift-store.ts +44 -84
- package/src/alphalib/types/robots/text-speak.ts +36 -62
- package/src/alphalib/types/robots/text-translate.ts +35 -62
- package/src/alphalib/types/robots/tigris-import.ts +34 -86
- package/src/alphalib/types/robots/tigris-store.ts +35 -70
- package/src/alphalib/types/robots/tlcdn-deliver.ts +23 -47
- package/src/alphalib/types/robots/transloadit-import.ts +24 -29
- package/src/alphalib/types/robots/transloadit-store.ts +20 -7
- package/src/alphalib/types/robots/tus-store.ts +34 -58
- package/src/alphalib/types/robots/upload-handle.ts +23 -41
- package/src/alphalib/types/robots/video-adaptive.ts +28 -51
- package/src/alphalib/types/robots/video-artwork.ts +28 -54
- package/src/alphalib/types/robots/video-concat.ts +29 -52
- package/src/alphalib/types/robots/video-encode.ts +39 -62
- package/src/alphalib/types/robots/video-generate.ts +20 -18
- package/src/alphalib/types/robots/video-merge.ts +36 -55
- package/src/alphalib/types/robots/video-ondemand.ts +48 -62
- package/src/alphalib/types/robots/video-split.ts +32 -61
- package/src/alphalib/types/robots/video-subtitle.ts +30 -52
- package/src/alphalib/types/robots/video-thumbs.ts +74 -78
- package/src/alphalib/types/robots/vimeo-import.ts +12 -17
- package/src/alphalib/types/robots/vimeo-store.ts +46 -65
- package/src/alphalib/types/robots/wasabi-import.ts +33 -81
- package/src/alphalib/types/robots/wasabi-store.ts +38 -74
- package/src/alphalib/types/robots/youtube-store.ts +81 -91
- package/src/alphalib/types/stackVersions.ts +26 -3
- package/src/alphalib/types/storageAsset.ts +84 -36
- package/src/alphalib/types/storageResults.ts +75 -0
- package/src/alphalib/types/utility.ts +52 -0
- 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
|
-
!
|
|
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
|
+
}
|