@transloadit/zod 5.0.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/v3/assemblyStatus.d.ts +682 -682
  2. package/dist/v3/assemblyStatus.d.ts.map +1 -1
  3. package/dist/v3/assemblyStatus.js +23 -14
  4. package/dist/v3/englishInteger.d.ts +3 -0
  5. package/dist/v3/englishInteger.d.ts.map +1 -0
  6. package/dist/v3/englishInteger.js +12 -0
  7. package/dist/v3/lib/zodInputSemantics.d.ts +3 -1
  8. package/dist/v3/lib/zodInputSemantics.d.ts.map +1 -1
  9. package/dist/v3/lib/zodInputSemantics.js +17 -0
  10. package/dist/v3/robots/_ai-models.d.ts.map +1 -1
  11. package/dist/v3/robots/_ai-models.js +2 -0
  12. package/dist/v3/robots/_google-image-seed.d.ts +8 -0
  13. package/dist/v3/robots/_google-image-seed.d.ts.map +1 -0
  14. package/dist/v3/robots/_google-image-seed.js +11 -0
  15. package/dist/v3/robots/_image-describe-output.d.ts +55 -0
  16. package/dist/v3/robots/_image-describe-output.d.ts.map +1 -0
  17. package/dist/v3/robots/_image-describe-output.js +15 -0
  18. package/dist/v3/robots/_image-facedetect-output.d.ts +30 -0
  19. package/dist/v3/robots/_image-facedetect-output.d.ts.map +1 -0
  20. package/dist/v3/robots/_image-facedetect-output.js +14 -0
  21. package/dist/v3/robots/_index.d.ts +582 -48
  22. package/dist/v3/robots/_index.d.ts.map +1 -1
  23. package/dist/v3/robots/_index.js +84 -80
  24. package/dist/v3/robots/_instructions-primitives.d.ts +84 -0
  25. package/dist/v3/robots/_instructions-primitives.d.ts.map +1 -1
  26. package/dist/v3/robots/_instructions-primitives.js +57 -16
  27. package/dist/v3/robots/_ocr-output.d.ts +75 -0
  28. package/dist/v3/robots/_ocr-output.d.ts.map +1 -0
  29. package/dist/v3/robots/_ocr-output.js +14 -0
  30. package/dist/v3/robots/ai-chat.d.ts +13 -13
  31. package/dist/v3/robots/ai-chat.d.ts.map +1 -1
  32. package/dist/v3/robots/audio-encode.d.ts.map +1 -1
  33. package/dist/v3/robots/audio-encode.js +8 -1
  34. package/dist/v3/robots/audio-split.d.ts.map +1 -1
  35. package/dist/v3/robots/audio-split.js +2 -0
  36. package/dist/v3/robots/digitalocean-store.d.ts +4 -4
  37. package/dist/v3/robots/digitalocean-store.js +1 -1
  38. package/dist/v3/robots/document-convert.d.ts +8 -6
  39. package/dist/v3/robots/document-convert.d.ts.map +1 -1
  40. package/dist/v3/robots/document-convert.js +5 -5
  41. package/dist/v3/robots/document-extract.d.ts +4 -4
  42. package/dist/v3/robots/document-ocr.d.ts +8 -8
  43. package/dist/v3/robots/google-import.d.ts +4 -6
  44. package/dist/v3/robots/google-import.d.ts.map +1 -1
  45. package/dist/v3/robots/google-import.js +5 -2
  46. package/dist/v3/robots/google-store.d.ts +32 -8
  47. package/dist/v3/robots/google-store.d.ts.map +1 -1
  48. package/dist/v3/robots/google-store.js +14 -14
  49. package/dist/v3/robots/http-import.d.ts.map +1 -1
  50. package/dist/v3/robots/http-import.js +4 -0
  51. package/dist/v3/robots/image-bgremove.d.ts +16 -16
  52. package/dist/v3/robots/image-describe.d.ts +17 -17
  53. package/dist/v3/robots/image-describe.d.ts.map +1 -1
  54. package/dist/v3/robots/image-describe.js +2 -1
  55. package/dist/v3/robots/image-facedetect.d.ts +9 -35
  56. package/dist/v3/robots/image-facedetect.d.ts.map +1 -1
  57. package/dist/v3/robots/image-facedetect.js +1 -11
  58. package/dist/v3/robots/image-generate.d.ts +20 -20
  59. package/dist/v3/robots/image-generate.d.ts.map +1 -1
  60. package/dist/v3/robots/image-generate.js +7 -2
  61. package/dist/v3/robots/image-ocr.d.ts +8 -8
  62. package/dist/v3/robots/image-resize.d.ts +4 -0
  63. package/dist/v3/robots/image-resize.d.ts.map +1 -1
  64. package/dist/v3/robots/image-resize.js +34 -6
  65. package/dist/v3/robots/image-upscale.d.ts +17 -12
  66. package/dist/v3/robots/image-upscale.d.ts.map +1 -1
  67. package/dist/v3/robots/image-upscale.js +14 -2
  68. package/dist/v3/robots/mega-store.d.ts +4 -4
  69. package/dist/v3/robots/mega-store.js +1 -1
  70. package/dist/v3/robots/s3-store.d.ts +8 -8
  71. package/dist/v3/robots/s3-store.d.ts.map +1 -1
  72. package/dist/v3/robots/s3-store.js +34 -18
  73. package/dist/v3/robots/speech-transcribe.d.ts +12 -12
  74. package/dist/v3/robots/text-speak.d.ts +8 -8
  75. package/dist/v3/robots/text-translate.d.ts +8 -8
  76. package/dist/v3/robots/video-adaptive.d.ts +16 -19
  77. package/dist/v3/robots/video-adaptive.d.ts.map +1 -1
  78. package/dist/v3/robots/video-adaptive.js +37 -3
  79. package/dist/v3/robots/video-concat.d.ts.map +1 -1
  80. package/dist/v3/robots/video-concat.js +7 -3
  81. package/dist/v3/robots/video-encode.d.ts.map +1 -1
  82. package/dist/v3/robots/video-encode.js +6 -0
  83. package/dist/v3/robots/video-generate.d.ts +20 -20
  84. package/dist/v3/robots/video-generate.js +1 -1
  85. package/dist/v3/robots/video-merge.d.ts.map +1 -1
  86. package/dist/v3/robots/video-merge.js +15 -1
  87. package/dist/v3/robots/video-split.d.ts.map +1 -1
  88. package/dist/v3/robots/video-split.js +2 -0
  89. package/dist/v3/robots/video-subtitle.d.ts +47 -4
  90. package/dist/v3/robots/video-subtitle.d.ts.map +1 -1
  91. package/dist/v3/robots/video-subtitle.js +59 -46
  92. package/dist/v3/robots/video-thumbs.d.ts +6 -0
  93. package/dist/v3/robots/video-thumbs.d.ts.map +1 -1
  94. package/dist/v3/robots/video-thumbs.js +15 -5
  95. package/dist/v3/robots/vimeo-import.d.ts.map +1 -1
  96. package/dist/v3/robots/vimeo-import.js +1 -1
  97. package/dist/v3/robots/youtube-store.d.ts +37 -20
  98. package/dist/v3/robots/youtube-store.d.ts.map +1 -1
  99. package/dist/v3/robots/youtube-store.js +17 -29
  100. package/dist/v3/youtubeCategories.d.ts +20 -0
  101. package/dist/v3/youtubeCategories.d.ts.map +1 -0
  102. package/dist/v3/youtubeCategories.js +20 -0
  103. package/dist/v4/assemblyStatus.d.ts +75 -1183
  104. package/dist/v4/assemblyStatus.d.ts.map +1 -1
  105. package/dist/v4/assemblyStatus.js +23 -14
  106. package/dist/v4/englishInteger.d.ts +3 -0
  107. package/dist/v4/englishInteger.d.ts.map +1 -0
  108. package/dist/v4/englishInteger.js +12 -0
  109. package/dist/v4/lib/zodInputSemantics.d.ts +3 -1
  110. package/dist/v4/lib/zodInputSemantics.d.ts.map +1 -1
  111. package/dist/v4/lib/zodInputSemantics.js +6 -0
  112. package/dist/v4/robots/_ai-models.d.ts.map +1 -1
  113. package/dist/v4/robots/_ai-models.js +2 -0
  114. package/dist/v4/robots/_google-image-seed.d.ts +8 -0
  115. package/dist/v4/robots/_google-image-seed.d.ts.map +1 -0
  116. package/dist/v4/robots/_google-image-seed.js +11 -0
  117. package/dist/v4/robots/_image-describe-output.d.ts +23 -0
  118. package/dist/v4/robots/_image-describe-output.d.ts.map +1 -0
  119. package/dist/v4/robots/_image-describe-output.js +15 -0
  120. package/dist/v4/robots/_image-facedetect-output.d.ts +14 -0
  121. package/dist/v4/robots/_image-facedetect-output.d.ts.map +1 -0
  122. package/dist/v4/robots/_image-facedetect-output.js +15 -0
  123. package/dist/v4/robots/_index.d.ts +582 -48
  124. package/dist/v4/robots/_index.d.ts.map +1 -1
  125. package/dist/v4/robots/_index.js +84 -80
  126. package/dist/v4/robots/_instructions-primitives.d.ts +18 -0
  127. package/dist/v4/robots/_instructions-primitives.d.ts.map +1 -1
  128. package/dist/v4/robots/_instructions-primitives.js +56 -15
  129. package/dist/v4/robots/_ocr-output.d.ts +29 -0
  130. package/dist/v4/robots/_ocr-output.d.ts.map +1 -0
  131. package/dist/v4/robots/_ocr-output.js +14 -0
  132. package/dist/v4/robots/ai-chat.d.ts +1 -1
  133. package/dist/v4/robots/ai-chat.d.ts.map +1 -1
  134. package/dist/v4/robots/audio-encode.d.ts.map +1 -1
  135. package/dist/v4/robots/audio-encode.js +8 -1
  136. package/dist/v4/robots/audio-split.d.ts.map +1 -1
  137. package/dist/v4/robots/audio-split.js +2 -0
  138. package/dist/v4/robots/digitalocean-store.d.ts +8 -8
  139. package/dist/v4/robots/digitalocean-store.js +1 -1
  140. package/dist/v4/robots/document-convert.d.ts +22 -8
  141. package/dist/v4/robots/document-convert.d.ts.map +1 -1
  142. package/dist/v4/robots/document-convert.js +5 -5
  143. package/dist/v4/robots/google-import.d.ts +4 -4
  144. package/dist/v4/robots/google-import.d.ts.map +1 -1
  145. package/dist/v4/robots/google-import.js +5 -2
  146. package/dist/v4/robots/google-store.d.ts +16 -4
  147. package/dist/v4/robots/google-store.d.ts.map +1 -1
  148. package/dist/v4/robots/google-store.js +14 -14
  149. package/dist/v4/robots/http-import.d.ts.map +1 -1
  150. package/dist/v4/robots/http-import.js +4 -0
  151. package/dist/v4/robots/image-describe.d.ts +1 -5
  152. package/dist/v4/robots/image-describe.d.ts.map +1 -1
  153. package/dist/v4/robots/image-describe.js +2 -1
  154. package/dist/v4/robots/image-facedetect.d.ts +1 -11
  155. package/dist/v4/robots/image-facedetect.d.ts.map +1 -1
  156. package/dist/v4/robots/image-facedetect.js +1 -12
  157. package/dist/v4/robots/image-generate.d.ts +0 -4
  158. package/dist/v4/robots/image-generate.d.ts.map +1 -1
  159. package/dist/v4/robots/image-generate.js +6 -2
  160. package/dist/v4/robots/image-resize.d.ts +4 -0
  161. package/dist/v4/robots/image-resize.d.ts.map +1 -1
  162. package/dist/v4/robots/image-resize.js +34 -6
  163. package/dist/v4/robots/image-upscale.d.ts +5 -0
  164. package/dist/v4/robots/image-upscale.d.ts.map +1 -1
  165. package/dist/v4/robots/image-upscale.js +14 -2
  166. package/dist/v4/robots/mega-store.d.ts +8 -8
  167. package/dist/v4/robots/mega-store.js +1 -1
  168. package/dist/v4/robots/s3-store.d.ts +20 -0
  169. package/dist/v4/robots/s3-store.d.ts.map +1 -1
  170. package/dist/v4/robots/s3-store.js +34 -18
  171. package/dist/v4/robots/video-adaptive.d.ts +16 -16
  172. package/dist/v4/robots/video-adaptive.d.ts.map +1 -1
  173. package/dist/v4/robots/video-adaptive.js +38 -5
  174. package/dist/v4/robots/video-concat.d.ts.map +1 -1
  175. package/dist/v4/robots/video-concat.js +7 -3
  176. package/dist/v4/robots/video-encode.d.ts.map +1 -1
  177. package/dist/v4/robots/video-encode.js +6 -0
  178. package/dist/v4/robots/video-generate.d.ts +0 -4
  179. package/dist/v4/robots/video-generate.d.ts.map +1 -1
  180. package/dist/v4/robots/video-generate.js +1 -1
  181. package/dist/v4/robots/video-merge.d.ts.map +1 -1
  182. package/dist/v4/robots/video-merge.js +15 -1
  183. package/dist/v4/robots/video-split.d.ts.map +1 -1
  184. package/dist/v4/robots/video-split.js +2 -0
  185. package/dist/v4/robots/video-subtitle.d.ts +31 -4
  186. package/dist/v4/robots/video-subtitle.d.ts.map +1 -1
  187. package/dist/v4/robots/video-subtitle.js +58 -46
  188. package/dist/v4/robots/video-thumbs.d.ts +6 -0
  189. package/dist/v4/robots/video-thumbs.d.ts.map +1 -1
  190. package/dist/v4/robots/video-thumbs.js +15 -5
  191. package/dist/v4/robots/vimeo-import.d.ts.map +1 -1
  192. package/dist/v4/robots/vimeo-import.js +1 -1
  193. package/dist/v4/robots/youtube-store.d.ts +25 -76
  194. package/dist/v4/robots/youtube-store.d.ts.map +1 -1
  195. package/dist/v4/robots/youtube-store.js +18 -29
  196. package/dist/v4/youtubeCategories.d.ts +20 -0
  197. package/dist/v4/youtubeCategories.d.ts.map +1 -0
  198. package/dist/v4/youtubeCategories.js +20 -0
  199. package/package.json +2 -2
@@ -2,7 +2,19 @@ import { optionalWithV3Semantics } from "../lib/sdkZodOptional.js";
2
2
  import { z } from 'zod/v4';
3
3
  import { createStorageStoreExample, defineRobotWithHiddenFields, robotBase, robotStoreMeta, robotUse, s3Base, storeFilePath, } from "./_instructions-primitives.js";
4
4
  const s3StoreAclSchema = z
5
- .enum(['bucket-default', 'private', 'public', 'public-read'])
5
+ // AWS object canned ACLs, plus the existing omission sentinel and legacy `public` value.
6
+ // `log-delivery-write` is bucket-only: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl
7
+ .enum([
8
+ 'authenticated-read',
9
+ 'aws-exec-read',
10
+ 'bucket-default',
11
+ 'bucket-owner-full-control',
12
+ 'bucket-owner-read',
13
+ 'private',
14
+ 'public',
15
+ 'public-read',
16
+ 'public-read-write',
17
+ ])
6
18
  .default('public-read');
7
19
  export const meta = {
8
20
  ...robotStoreMeta,
@@ -21,48 +33,54 @@ export const robotS3StoreInstructionsSchema = robotBase
21
33
  .merge(robotUse)
22
34
  .merge(s3Base)
23
35
  .extend({
36
+ // URL rewriting does not fix bucket addressing, and custom paths need not use file.url_name.
37
+ // Keep the bucket warning separate from the old blanket filename-sanitization claim.
24
38
  robot: z.literal('/s3/store').describe(`
25
39
  If you are new to Amazon S3, see our tutorial on [using your own S3 bucket](/docs/faq/how-to-set-up-an-amazon-s3-bucket/).
26
40
 
27
- The URL to the result file in your S3 bucket will be returned in the <dfn>Assembly Status JSON</dfn>. If your S3 bucket has versioning enabled, the version ID of the file will be returned within \`meta.version_id\`
41
+ The URL to the result file in your S3 bucket will be returned in the <dfn>Assembly Status JSON</dfn>. A returned URL does not make a private object public or grant read access. If your S3 bucket has versioning enabled, the version ID of the file will be returned within \`meta.version_id\`.
28
42
 
29
43
  > [!Warning]
30
- > **Avoid permission errors.** By default, \`acl\` is set to \`"${s3StoreAclSchema.parse(undefined)}"\`. AWS S3 has a bucket setting called \`Block new public ACLs and uploading public objects\`. Set this to <strong>False</strong> in your bucket if you intend to leave \`acl\` as \`"${s3StoreAclSchema.parse(undefined)}"\`. Otherwise, you’ll receive permission errors in your Assemblies despite your S3 credentials being configured correctly.
44
+ > **Configure private buckets explicitly.** The Robot’s default \`acl\` is still \`"${s3StoreAclSchema.parse(undefined)}"\`. For a private bucket, set \`acl: "bucket-default"\` and do not supply ACL or grant headers. This omits the generated ACL header and works with [Bucket owner enforced Object Ownership](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html), where ACLs are disabled. Keep S3 Block Public Access enabled. Setting \`acl: "private"\` still sends an ACL and is not equivalent to omitting it.
31
45
 
32
46
  > [!Warning]
33
- > **Use DNS-compliant bucket names.** Your bucket name [must be DNS-compliant](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) and must not contain uppercase letters. Any non-alphanumeric characters in the file names will be replaced with an underscore, and spaces will be replaced with dashes. If your existing S3 bucket contains uppercase letters or is otherwise not DNS-compliant, rewrite the result URLs using the <dfn>Robot</dfn>’s \`url_prefix\` parameter.
47
+ > **Use DNS-compliant bucket names.** Follow AWS’s [bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The \`url_prefix\` parameter changes returned URLs; it does not change the bucket or its access permissions.
34
48
 
35
49
  <span id="minimum-s3-iam-permissions" aria-hidden="true"></span>
36
50
 
37
51
  ## Limit access
38
52
 
39
- You will also need to add permissions to your bucket so that Transloadit can access it properly. Here is an example IAM policy that you can use. Following the [principle of least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege), it contains the **minimum required permissions** to export a file to your S3 bucket using Transloadit. You may require more permissions (especially viewing permissions) depending on your application.
53
+ Use a dedicated AWS identity with access limited to the destination bucket and object prefix. Do not use [AWS root access keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/root-user-best-practices.html). Store its access key ID, secret access key, bucket name and region as \`key\`, \`secret\`, \`bucket\` and \`bucket_region\` in <dfn>Template Credentials</dfn>, then reference their name with \`credentials\`. Trusted backend integrations can instead supply those parameters directly; do not expose AWS secrets in browser instructions.
40
54
 
41
- Please change \`{BUCKET_NAME}\` in the values for \`Sid\` and \`Resource\` accordingly. Also, this policy will grant the minimum required permissions to all your users. We advise you to create a separate Amazon IAM user, and use its User ARN (can be found in the "Summary" tab of a user [here](https://console.aws.amazon.com/iam/home#users)) for the \`Principal\` value. More information about this can be found [here](https://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html).
55
+ The following is an [identity-based IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), attached to that dedicated identity, not a bucket policy. It intentionally has no \`Principal\`. Replace \`{BUCKET_NAME}\` and use a Robot \`path\` beginning with \`uploads/\`, or adapt both the policy prefix and the path together.
56
+
57
+ This example covers uploads and failed multipart-upload cleanup with an explicit \`bucket_region\`, \`acl: "bucket-default"\`, no ACL/grant headers, no tags and S3-managed encryption (SSE-S3). Existing bucket policies, organization controls or endpoint policies can still deny access.
42
58
 
43
59
  \`\`\`json
44
60
  {
45
61
  "Version": "2012-10-17",
46
62
  "Statement": [
47
63
  {
48
- "Sid": "AllowTransloaditToStoreFilesIn{BUCKET_NAME}Bucket",
64
+ "Sid": "UploadAndAbortWithinPrefix",
49
65
  "Effect": "Allow",
50
- "Action": ["s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl"],
51
- "Resource": ["arn:aws:s3:::{BUCKET_NAME}", "arn:aws:s3:::{BUCKET_NAME}/*"]
66
+ "Action": ["s3:PutObject", "s3:AbortMultipartUpload"],
67
+ "Resource": "arn:aws:s3:::{BUCKET_NAME}/uploads/*"
52
68
  }
53
69
  ]
54
70
  }
55
71
  \`\`\`
56
72
 
57
- The \`Sid\` value is just an identifier for you to recognize the rule later. You can name it anything you like.
73
+ The uploader uses either \`PutObject\` or \`CreateMultipartUpload\`, \`UploadPart\` and \`CompleteMultipartUpload\`; failed multipart uploads can trigger \`AbortMultipartUpload\`. AWS maps the successful upload operations to \`s3:PutObject\`. Write access can **overwrite an existing object key**; it is not add-only. Choose unique object paths and consider versioning for recovery.
58
74
 
59
- The policy needs to be separated into two parts, because the \`ListBucket\` action requires permissions on the bucket while the other actions require permissions on the objects in the bucket. When targeting the objects there's a trailing slash and an asterisk in the \`Resource\` parameter, whereas when the policy targets the bucket, the slash and the asterisk are omitted.
75
+ Add permissions only for features you use, following AWS’s [operation permission reference](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-policy-actions.html):
60
76
 
61
- Please note that if you give the <dfn>Robot</dfn>'s \`acl\` parameter a value of \`"bucket-default"\`, then you do not need the \`"s3:PutObjectAcl"\` permission in your bucket policy.
77
+ - Without an explicit \`bucket_region\`, region discovery can require \`s3:GetBucketLocation\` and fallback \`s3:ListBucket\` on the bucket ARN, \`arn:aws:s3:::{BUCKET_NAME}\`, without an object suffix. Supplying the correct region avoids these discovery requests.
78
+ - ACL or grant headers require \`s3:PutObjectAcl\`; tags require \`s3:PutObjectTagging\` on the allowed object prefix. \`bucket-default\` does not remove ACL/grant headers you supply in \`headers\`.
79
+ - Downloading private results requires separate read authorization. Even a URL generated with \`sign_urls_for\` needs the signing identity to have the appropriate read permissions.
62
80
 
63
- In order to build proper result URLs we need to know the region in which your S3 bucket resides. For this we require the \`GetBucketLocation\` permission. Figuring out your bucket's region this way will also slow down your Assemblies. To make this much faster and to also not require the \`GetBucketLocation\` permission, we have added the \`bucket_region\` parameter to the /s3/store and /s3/import Robots. We recommend using them at all times.
81
+ S3 applies its [bucket encryption configuration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html) when no encryption override is sent. You can request SSE-KMS through \`headers\`, using \`x-amz-server-side-encryption: aws:kms\` and \`x-amz-server-side-encryption-aws-kms-key-id\`. When either bucket default encryption or request headers select [SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html), the uploading identity needs \`kms:GenerateDataKey\` on the relevant key, plus \`kms:Decrypt\` for multipart uploads. For a customer-managed key, grant these permissions with a compatible KMS key policy; the base S3 policy above does not include them. Do not add blanket \`kms:*\` or \`sts:*\` grants.
64
82
 
65
- Please keep in mind that if you use bucket encryption you may also need to add \`"sts:*"\` and \`"kms:*"\` to the bucket policy. Please read [here](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) and [here](https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/) in case you run into trouble with our example bucket policy.
83
+ Short-lived AWS credentials are a matching set of \`key\`, \`secret\` and \`session_token\`. Have a trusted backend obtain and refresh all three, then supply them together when it creates the Assembly. It can pass them directly in Robot instructions or save and update them together through the [Template Credentials API](/docs/api/template-credentials-post/). Keep all three out of browser instructions; replacing only the session token does not refresh expired access keys. This Robot passes the supplied credentials to S3; it does not assume a role or refresh expired credentials. Keep temporary credentials valid for the upload.
66
84
  `),
67
85
  path: storeFilePath,
68
86
  url_prefix: z
@@ -72,9 +90,7 @@ Please keep in mind that if you use bucket encryption you may also need to add \
72
90
  The URL prefix used for the returned URL, such as \`"http://my.cdn.com/some/path/"\`.
73
91
  `),
74
92
  acl: s3StoreAclSchema.describe(`
75
- The permissions used for this file.
76
-
77
- Please keep in mind that the default value \`"${s3StoreAclSchema.parse(undefined)}"\` can lead to permission errors due to the \`"Block all public access"\` checkbox that is checked by default when creating a new Amazon S3 Bucket in the AWS console.
93
+ The ACL used for this file. Supports AWS’s [canned ACLs for objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). Other S3-compatible providers may support different ACLs. The default remains \`"${s3StoreAclSchema.parse(undefined)}"\`, which can conflict with S3 Block Public Access and disabled ACLs. For modern private buckets, explicitly set \`"bucket-default"\` to omit the generated ACL header, and do not supply ACL/grant headers in \`headers\`. \`"private"\` still sends an ACL.
78
94
  `),
79
95
  check_integrity: z
80
96
  .boolean()
@@ -118,7 +134,7 @@ This parameter provides signed URLs in the result JSON (in the \`signed_url\` an
118
134
  session_token: optionalWithV3Semantics(z
119
135
  .string())
120
136
  .describe(`
121
- The session token to use for the S3 store. This is only used if the credentials are from an IAM user with the \`sts:AssumeRole\` permission.
137
+ The session token belonging to the temporary AWS access key ID and secret access key supplied for this upload. The Robot does not assume a role or refresh these credentials; they must remain valid for the upload.
122
138
  `),
123
139
  })
124
140
  .strict();
@@ -34,6 +34,7 @@ export declare const robotVideoAdaptiveInstructionsSchema: z.ZodObject<{
34
34
  group_by_original: z.ZodOptional<z.ZodBoolean>;
35
35
  fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
36
  }, z.core.$strict>]>>;
37
+ robot: z.ZodLiteral<"/video/adaptive">;
37
38
  ffmpeg: z.ZodOptional<z.ZodObject<{
38
39
  af: z.ZodOptional<z.ZodString>;
39
40
  'b:a': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
@@ -133,8 +134,6 @@ export declare const robotVideoAdaptiveInstructionsSchema: z.ZodObject<{
133
134
  v7: "v7";
134
135
  v8: "v8";
135
136
  }>, z.ZodString]>>;
136
- width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
137
- height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
138
137
  preset: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
139
138
  empty: "empty";
140
139
  aac: "aac";
@@ -339,7 +338,8 @@ export declare const robotVideoAdaptiveInstructionsSchema: z.ZodObject<{
339
338
  webm_720p: "webm_720p";
340
339
  webm_1080p: "webm_1080p";
341
340
  }>, z.ZodTransform<"empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv", "empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "dash-32k_audio" | "dash_32k-audio" | "dash_32k_audio" | "dash-64k_audio" | "dash_64k-audio" | "dash_64k_audio" | "dash-128k_audio" | "dash_128k-audio" | "dash_128k_audio" | "dash-256k_audio" | "dash_256k-audio" | "dash_256k_audio" | "dash/32k_audio" | "dash/64k_audio" | "dash/128k_audio" | "dash/256k_audio" | "hg-transformers_audio" | "hg_transformers-audio" | "hg_transformers_audio" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv" | "android_high" | "android_low" | "dash-270p_video" | "dash_270p-video" | "dash_270p_video" | "dash-360p_video" | "dash_360p-video" | "dash_360p_video" | "dash-480p_video" | "dash_480p-video" | "dash_480p_video" | "dash-540p_video" | "dash_540p-video" | "dash_540p_video" | "dash-576p_video" | "dash_576p-video" | "dash_576p_video" | "dash-720p_video" | "dash_720p-video" | "dash_720p_video" | "dash-1080p_video" | "dash_1080p-video" | "dash_1080p_video" | "dash/270p_video" | "dash/360p_video" | "dash/480p_video" | "dash/540p_video" | "dash/576p_video" | "dash/720p_video" | "dash/1080p_video" | "hls_270p" | "hls_360p" | "hls_480p" | "hls_540p" | "hls_576p" | "hls_720p" | "hls_1080p" | "ipad_high" | "ipad_low" | "iphone_high" | "iphone_low" | "vp9_270p" | "vp9_360p" | "vp9_480p" | "vp9_540p" | "vp9_576p" | "vp9_720p" | "vp9_1080p" | "web/mp4_x265/240p" | "web/mp4_x265/360p" | "web/mp4_x265/480p" | "web/mp4_x265/720p" | "web/mp4_x265/1080p" | "web/mp4_x265/4k" | "web/mp4_x265/8k" | "web/webm_av1/240p" | "web/webm_av1/360p" | "web/webm_av1/480p" | "web/webm_av1/720p" | "web/webm_av1/1080p" | "web/webm_av1/4k" | "web/webm_av1/8k" | "webm_270p" | "webm_360p" | "webm_480p" | "webm_540p" | "webm_576p" | "webm_720p" | "webm_1080p">>>;
342
- robot: z.ZodLiteral<"/video/adaptive">;
341
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
342
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
343
343
  technique: z.ZodDefault<z.ZodEnum<{
344
344
  dash: "dash";
345
345
  hls: "hls";
@@ -347,7 +347,7 @@ export declare const robotVideoAdaptiveInstructionsSchema: z.ZodObject<{
347
347
  }>>;
348
348
  playlist_name: z.ZodOptional<z.ZodString>;
349
349
  hls_playlist_name: z.ZodOptional<z.ZodString>;
350
- segment_duration: z.ZodDefault<z.ZodNumber>;
350
+ segment_duration: z.ZodOptional<z.ZodNumber>;
351
351
  closed_captions: z.ZodDefault<z.ZodBoolean>;
352
352
  audio_group: z.ZodDefault<z.ZodBoolean>;
353
353
  }, z.core.$strict>;
@@ -384,6 +384,7 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
384
384
  group_by_original: z.ZodOptional<z.ZodBoolean>;
385
385
  fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
386
386
  }, z.core.$strict>]>>;
387
+ robot: z.ZodLiteral<"/video/adaptive">;
387
388
  ffmpeg: z.ZodOptional<z.ZodObject<{
388
389
  af: z.ZodOptional<z.ZodString>;
389
390
  'b:a': z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
@@ -483,8 +484,6 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
483
484
  v7: "v7";
484
485
  v8: "v8";
485
486
  }>, z.ZodString]>>;
486
- width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
487
- height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
488
487
  preset: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
489
488
  empty: "empty";
490
489
  aac: "aac";
@@ -689,7 +688,8 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
689
688
  webm_720p: "webm_720p";
690
689
  webm_1080p: "webm_1080p";
691
690
  }>, z.ZodTransform<"empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv", "empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "dash-32k_audio" | "dash_32k-audio" | "dash_32k_audio" | "dash-64k_audio" | "dash_64k-audio" | "dash_64k_audio" | "dash-128k_audio" | "dash_128k-audio" | "dash_128k_audio" | "dash-256k_audio" | "dash_256k-audio" | "dash_256k_audio" | "dash/32k_audio" | "dash/64k_audio" | "dash/128k_audio" | "dash/256k_audio" | "hg-transformers_audio" | "hg_transformers-audio" | "hg_transformers_audio" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv" | "android_high" | "android_low" | "dash-270p_video" | "dash_270p-video" | "dash_270p_video" | "dash-360p_video" | "dash_360p-video" | "dash_360p_video" | "dash-480p_video" | "dash_480p-video" | "dash_480p_video" | "dash-540p_video" | "dash_540p-video" | "dash_540p_video" | "dash-576p_video" | "dash_576p-video" | "dash_576p_video" | "dash-720p_video" | "dash_720p-video" | "dash_720p_video" | "dash-1080p_video" | "dash_1080p-video" | "dash_1080p_video" | "dash/270p_video" | "dash/360p_video" | "dash/480p_video" | "dash/540p_video" | "dash/576p_video" | "dash/720p_video" | "dash/1080p_video" | "hls_270p" | "hls_360p" | "hls_480p" | "hls_540p" | "hls_576p" | "hls_720p" | "hls_1080p" | "ipad_high" | "ipad_low" | "iphone_high" | "iphone_low" | "vp9_270p" | "vp9_360p" | "vp9_480p" | "vp9_540p" | "vp9_576p" | "vp9_720p" | "vp9_1080p" | "web/mp4_x265/240p" | "web/mp4_x265/360p" | "web/mp4_x265/480p" | "web/mp4_x265/720p" | "web/mp4_x265/1080p" | "web/mp4_x265/4k" | "web/mp4_x265/8k" | "web/webm_av1/240p" | "web/webm_av1/360p" | "web/webm_av1/480p" | "web/webm_av1/720p" | "web/webm_av1/1080p" | "web/webm_av1/4k" | "web/webm_av1/8k" | "webm_270p" | "webm_360p" | "webm_480p" | "webm_540p" | "webm_576p" | "webm_720p" | "webm_1080p">>>;
692
- robot: z.ZodLiteral<"/video/adaptive">;
691
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
692
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
693
693
  technique: z.ZodDefault<z.ZodEnum<{
694
694
  dash: "dash";
695
695
  hls: "hls";
@@ -697,7 +697,7 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
697
697
  }>>;
698
698
  playlist_name: z.ZodOptional<z.ZodString>;
699
699
  hls_playlist_name: z.ZodOptional<z.ZodString>;
700
- segment_duration: z.ZodDefault<z.ZodNumber>;
700
+ segment_duration: z.ZodOptional<z.ZodNumber>;
701
701
  closed_captions: z.ZodDefault<z.ZodBoolean>;
702
702
  audio_group: z.ZodDefault<z.ZodBoolean>;
703
703
  result: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"debug">, z.ZodDefault<z.ZodBoolean>]>>;
@@ -734,6 +734,7 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
734
734
  group_by_original: z.ZodOptional<z.ZodBoolean>;
735
735
  fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
736
736
  }, z.core.$strict>]>>;
737
+ robot: z.ZodLiteral<"/video/adaptive">;
737
738
  ffmpeg: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
738
739
  af: z.ZodOptional<z.ZodString>;
739
740
  'b:a': z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>]>>;
@@ -833,8 +834,6 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
833
834
  v7: "v7";
834
835
  v8: "v8";
835
836
  }>]>, z.ZodString]>>;
836
- width: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
837
- height: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
838
837
  preset: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodPipe<z.ZodEnum<{
839
838
  empty: "empty";
840
839
  aac: "aac";
@@ -1039,7 +1038,8 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
1039
1038
  webm_720p: "webm_720p";
1040
1039
  webm_1080p: "webm_1080p";
1041
1040
  }>, z.ZodTransform<"empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv", "empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "dash-32k_audio" | "dash_32k-audio" | "dash_32k_audio" | "dash-64k_audio" | "dash_64k-audio" | "dash_64k_audio" | "dash-128k_audio" | "dash_128k-audio" | "dash_128k_audio" | "dash-256k_audio" | "dash_256k-audio" | "dash_256k_audio" | "dash/32k_audio" | "dash/64k_audio" | "dash/128k_audio" | "dash/256k_audio" | "hg-transformers_audio" | "hg_transformers-audio" | "hg_transformers_audio" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv" | "android_high" | "android_low" | "dash-270p_video" | "dash_270p-video" | "dash_270p_video" | "dash-360p_video" | "dash_360p-video" | "dash_360p_video" | "dash-480p_video" | "dash_480p-video" | "dash_480p_video" | "dash-540p_video" | "dash_540p-video" | "dash_540p_video" | "dash-576p_video" | "dash_576p-video" | "dash_576p_video" | "dash-720p_video" | "dash_720p-video" | "dash_720p_video" | "dash-1080p_video" | "dash_1080p-video" | "dash_1080p_video" | "dash/270p_video" | "dash/360p_video" | "dash/480p_video" | "dash/540p_video" | "dash/576p_video" | "dash/720p_video" | "dash/1080p_video" | "hls_270p" | "hls_360p" | "hls_480p" | "hls_540p" | "hls_576p" | "hls_720p" | "hls_1080p" | "ipad_high" | "ipad_low" | "iphone_high" | "iphone_low" | "vp9_270p" | "vp9_360p" | "vp9_480p" | "vp9_540p" | "vp9_576p" | "vp9_720p" | "vp9_1080p" | "web/mp4_x265/240p" | "web/mp4_x265/360p" | "web/mp4_x265/480p" | "web/mp4_x265/720p" | "web/mp4_x265/1080p" | "web/mp4_x265/4k" | "web/mp4_x265/8k" | "web/webm_av1/240p" | "web/webm_av1/360p" | "web/webm_av1/480p" | "web/webm_av1/720p" | "web/webm_av1/1080p" | "web/webm_av1/4k" | "web/webm_av1/8k" | "webm_270p" | "webm_360p" | "webm_480p" | "webm_540p" | "webm_576p" | "webm_720p" | "webm_1080p">>]>>;
1042
- robot: z.ZodLiteral<"/video/adaptive">;
1041
+ width: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1042
+ height: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1043
1043
  technique: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodEnum<{
1044
1044
  dash: "dash";
1045
1045
  hls: "hls";
@@ -1047,7 +1047,7 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
1047
1047
  }>]>>;
1048
1048
  playlist_name: z.ZodOptional<z.ZodString>;
1049
1049
  hls_playlist_name: z.ZodOptional<z.ZodString>;
1050
- segment_duration: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1050
+ segment_duration: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1051
1051
  closed_captions: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1052
1052
  audio_group: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1053
1053
  }, z.core.$strict>, interpolatableRobotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.ZodObject<{
@@ -1082,6 +1082,7 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
1082
1082
  group_by_original: z.ZodOptional<z.ZodBoolean>;
1083
1083
  fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
1084
1084
  }, z.core.$strict>]>>;
1085
+ robot: z.ZodLiteral<"/video/adaptive">;
1085
1086
  ffmpeg: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
1086
1087
  af: z.ZodOptional<z.ZodString>;
1087
1088
  'b:a': z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>]>>;
@@ -1181,8 +1182,6 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
1181
1182
  v7: "v7";
1182
1183
  v8: "v8";
1183
1184
  }>]>, z.ZodString]>>;
1184
- width: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1185
- height: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1186
1185
  preset: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodPipe<z.ZodEnum<{
1187
1186
  empty: "empty";
1188
1187
  aac: "aac";
@@ -1387,7 +1386,8 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
1387
1386
  webm_720p: "webm_720p";
1388
1387
  webm_1080p: "webm_1080p";
1389
1388
  }>, z.ZodTransform<"empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv", "empty" | "aac" | "alac" | "audio/aac" | "audio/alac" | "audio/flac" | "audio/mp3" | "audio/ogg" | "dash-32k-audio" | "dash-64k-audio" | "dash-128k-audio" | "dash-256k-audio" | "dash/32k-audio" | "dash/64k-audio" | "dash/128k-audio" | "dash/256k-audio" | "flac" | "hg-transformers-audio" | "mp3" | "ogg" | "opus" | "speech" | "wav" | "dash-32k_audio" | "dash_32k-audio" | "dash_32k_audio" | "dash-64k_audio" | "dash_64k-audio" | "dash_64k_audio" | "dash-128k_audio" | "dash_128k-audio" | "dash_128k_audio" | "dash-256k_audio" | "dash_256k-audio" | "dash_256k_audio" | "dash/32k_audio" | "dash/64k_audio" | "dash/128k_audio" | "dash/256k_audio" | "hg-transformers_audio" | "hg_transformers-audio" | "hg_transformers_audio" | "android" | "android-high" | "android-low" | "dash-270p-video" | "dash-360p-video" | "dash-480p-video" | "dash-540p-video" | "dash-576p-video" | "dash-720p-video" | "dash-1080p-video" | "dash/270p-video" | "dash/360p-video" | "dash/480p-video" | "dash/540p-video" | "dash/576p-video" | "dash/720p-video" | "dash/1080p-video" | "flash" | "gif" | "hevc" | "hls-270p" | "hls-360p" | "hls-480p" | "hls-540p" | "hls-576p" | "hls-720p" | "hls-1080p" | "hls/270p" | "hls/360p" | "hls/480p" | "hls/540p" | "hls/720p" | "hls/1080p" | "hls/4k" | "ipad" | "ipad-high" | "ipad-low" | "iphone" | "iphone-high" | "iphone-low" | "ogv" | "vod/270p" | "vod/480p" | "vod/720p" | "vod/1080p" | "vp9" | "vp9-270p" | "vp9-360p" | "vp9-480p" | "vp9-540p" | "vp9-576p" | "vp9-720p" | "vp9-1080p" | "web/mp4-x265/240p" | "web/mp4-x265/360p" | "web/mp4-x265/480p" | "web/mp4-x265/720p" | "web/mp4-x265/1080p" | "web/mp4-x265/4k" | "web/mp4-x265/8k" | "web/mp4/240p" | "web/mp4/360p" | "web/mp4/480p" | "web/mp4/540p" | "web/mp4/720p" | "web/mp4/1080p" | "web/mp4/4k" | "web/mp4/8k" | "web/webm-av1/240p" | "web/webm-av1/360p" | "web/webm-av1/480p" | "web/webm-av1/720p" | "web/webm-av1/1080p" | "web/webm-av1/4k" | "web/webm-av1/8k" | "web/webm/240p" | "web/webm/360p" | "web/webm/480p" | "web/webm/720p" | "web/webm/1080p" | "web/webm/4k" | "web/webm/8k" | "webm" | "webm-270p" | "webm-360p" | "webm-480p" | "webm-540p" | "webm-576p" | "webm-720p" | "webm-1080p" | "wmv" | "android_high" | "android_low" | "dash-270p_video" | "dash_270p-video" | "dash_270p_video" | "dash-360p_video" | "dash_360p-video" | "dash_360p_video" | "dash-480p_video" | "dash_480p-video" | "dash_480p_video" | "dash-540p_video" | "dash_540p-video" | "dash_540p_video" | "dash-576p_video" | "dash_576p-video" | "dash_576p_video" | "dash-720p_video" | "dash_720p-video" | "dash_720p_video" | "dash-1080p_video" | "dash_1080p-video" | "dash_1080p_video" | "dash/270p_video" | "dash/360p_video" | "dash/480p_video" | "dash/540p_video" | "dash/576p_video" | "dash/720p_video" | "dash/1080p_video" | "hls_270p" | "hls_360p" | "hls_480p" | "hls_540p" | "hls_576p" | "hls_720p" | "hls_1080p" | "ipad_high" | "ipad_low" | "iphone_high" | "iphone_low" | "vp9_270p" | "vp9_360p" | "vp9_480p" | "vp9_540p" | "vp9_576p" | "vp9_720p" | "vp9_1080p" | "web/mp4_x265/240p" | "web/mp4_x265/360p" | "web/mp4_x265/480p" | "web/mp4_x265/720p" | "web/mp4_x265/1080p" | "web/mp4_x265/4k" | "web/mp4_x265/8k" | "web/webm_av1/240p" | "web/webm_av1/360p" | "web/webm_av1/480p" | "web/webm_av1/720p" | "web/webm_av1/1080p" | "web/webm_av1/4k" | "web/webm_av1/8k" | "webm_270p" | "webm_360p" | "webm_480p" | "webm_540p" | "webm_576p" | "webm_720p" | "webm_1080p">>]>>;
1390
- robot: z.ZodLiteral<"/video/adaptive">;
1389
+ width: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1390
+ height: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1391
1391
  technique: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodEnum<{
1392
1392
  dash: "dash";
1393
1393
  hls: "hls";
@@ -1395,7 +1395,7 @@ export declare const robotVideoAdaptiveInstructionsWithHiddenFieldsSchema: z.Zod
1395
1395
  }>]>>;
1396
1396
  playlist_name: z.ZodOptional<z.ZodString>;
1397
1397
  hls_playlist_name: z.ZodOptional<z.ZodString>;
1398
- segment_duration: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1398
+ segment_duration: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1399
1399
  closed_captions: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1400
1400
  audio_group: z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>;
1401
1401
  result: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodLiteral<"debug">]>, z.ZodPrefault<z.ZodUnion<[z.ZodString, z.ZodBoolean]>>]>>;
@@ -1 +1 @@
1
- {"version":3,"file":"video-adaptive.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-adaptive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-adaptive.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-adaptive.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,16 @@ This <dfn>Robot</dfn> accepts all types of video files and audio files. Do not f
55
55
 
56
56
  This <dfn>Robot</dfn> is normally used in combination with [🤖/video/encode](/docs/robots/video-encode/). We have implemented video and audio encoding presets specifically for MPEG-Dash and HTTP Live Streaming support. These presets are prefixed with \`"dash/"\` and \`"hls/"\`. [View a HTTP Live Streaming demo here](/demos/video-encoding/implement-http-live-streaming/).
57
57
 
58
+ ### CMAF aspect ratios
59
+
60
+ CMAF aligns near-equal rendition aspect ratios, within 1% of the largest rendition, without re-encoding or changing pixel dimensions. This lets presets such as \`"hls/480p"\` and \`"hls/720p"\` support bitrate switching together.
61
+
62
+ Renditions with substantially different ratios, such as 4:3 and 16:9, keep their geometry in separate video groups. The Assembly warns because DASH players cannot switch bitrate between these groups. HLS still lists every variant. Use matching rendition ratios when custom FFmpeg options change video geometry or layout.
63
+
64
+ ### Segment alignment
65
+
66
+ HLS and CMAF video segments split at existing keyframes, so their actual duration can exceed \`segment_duration\`. To align renditions to four-second segments, set \`"ffmpeg": { "force_key_frames": "expr:gte(t,n_forced*4)" }\` in each preceding [🤖/video/encode](/docs/robots/video-encode/) Step. Replace \`4\` with your chosen segment duration and use the same value for every rendition. Set keyframe intervals during encoding; packaging cannot add keyframes to copied streams.
67
+
58
68
  ### Required CORS settings for MPEG-Dash and HTTP Live Streaming
59
69
 
60
70
  Playing back MPEG-Dash Manifest or HLS playlist files requires a proper CORS setup on the server-side. The file-serving server should be configured to add the following header fields to responses:
@@ -90,6 +100,26 @@ To set up CORS for your S3 bucket:
90
100
  The <dfn>Robot</dfn> gives its result files (segments, initialization segments, MPD manifest files and M3U8 playlist files) the right metadata property \`relative_path\`, so that you can store them easily using one of our storage <dfn>Robots</dfn>.
91
101
 
92
102
  In the \`path\` parameter of the storage <dfn>Robot</dfn> of your choice, use the <dfn>Assembly Variable</dfn> \`\${file.meta.relative_path}\` to store files in the proper paths to make the playlist files work.
103
+ `),
104
+ ffmpeg: robotFFmpegVideo.shape.ffmpeg.describe(`
105
+ Custom FFmpeg options are supported for the \`"hls"\` and \`"cmaf"\` techniques. Non-empty custom options are rejected for \`"dash"\`, the default technique.
106
+
107
+ These options apply to the packaging command, which copies the input streams by default. Set encoding options, such as keyframe intervals, in the preceding [🤖/video/encode](/docs/robots/video-encode/) Step.
108
+ `),
109
+ ffmpeg_stack: robotFFmpegVideo.shape.ffmpeg_stack
110
+ .removeDefault()
111
+ .default('v7.0.0')
112
+ .describe(`
113
+ Selects the FFmpeg stack for packaging. Defaults to \`"v7.0.0"\`. This Robot always uses at least \`"v7.0.0"\`; older stack selections are upgraded automatically.
114
+ `),
115
+ preset: robotFFmpegVideo.shape.preset.describe(`
116
+ This parameter has no effect on this Robot. Set the encoding preset in the preceding [🤖/video/encode](/docs/robots/video-encode/) Step.
117
+ `),
118
+ width: robotFFmpegVideo.shape.width.describe(`
119
+ This parameter has no effect on this Robot. Set the rendition width in the preceding [🤖/video/encode](/docs/robots/video-encode/) Step.
120
+ `),
121
+ height: robotFFmpegVideo.shape.height.describe(`
122
+ This parameter has no effect on this Robot. Set the rendition height in the preceding [🤖/video/encode](/docs/robots/video-encode/) Step.
93
123
  `),
94
124
  technique: z
95
125
  .enum(['dash', 'hls', 'cmaf'])
@@ -108,12 +138,11 @@ For \`"cmaf"\`, this value names the MPEG-Dash manifest and defaults to \`"playl
108
138
  .describe(`
109
139
  Only used when \`technique\` is \`"cmaf"\`. Defines the filename for the generated HLS master playlist. The default is \`"playlist.m3u8"\`.
110
140
  `),
111
- segment_duration: z
141
+ segment_duration: optionalWithV3Semantics(z
112
142
  .number()
113
- .int()
114
- .default(10)
143
+ .int())
115
144
  .describe(`
116
- The duration for each segment in seconds.
145
+ The duration for each segment in seconds. When omitted, defaults to 4 seconds for MPEG-Dash and CMAF, and 10 seconds for HLS.
117
146
  `),
118
147
  closed_captions: z
119
148
  .boolean()
@@ -129,7 +158,11 @@ When set to \`true\` and using the \`"hls"\` technique, audio-only input files a
129
158
 
130
159
  When enabled, video inputs only include their video stream in the output segments (any muxed audio is excluded). Provide audio separately as audio-only input files.
131
160
 
132
- This option is only supported for the \`"hls"\` technique and has no effect when using \`"dash"\`.
161
+ Each rendition’s \`LANGUAGE\` comes from the first audio stream’s \`language\` tag in its audio-only input file, or \`"und"\` when the tag is missing. Set the tag on [🤖/audio/encode](/docs/robots/audio-encode/) with \`"ffmpeg": {"metadata:s:a:0": "language=deu"}\`, for example.
162
+
163
+ The first audio-only input in \`use.steps\` order becomes \`DEFAULT=YES\`; the other renditions have \`DEFAULT=NO\`. All audio renditions have \`AUTOSELECT=YES\`. Their \`NAME\` uses the audio stream’s \`title\` tag when present, otherwise its language’s English name (for example, \`"eng"\` becomes “English” and \`"deu"\` becomes “German”). Untagged audio is named “Unknown”; unrecognized language codes are used as the name. Duplicate names receive a numeric suffix.
164
+
165
+ This option only enables alternate audio renditions with the \`"hls"\` technique and does not change packaging with \`"dash"\` or \`"cmaf"\`. CMAF puts all audio in one adaptation set labeled with the first audio language. Setting \`audio_group: true\` with CMAF, or providing CMAF inputs with more than one known audio language (including tracks muxed in a single video), adds an Assembly warning; packaging continues with the existing CMAF output. For multi-language audio, use \`technique: "hls"\` with \`audio_group: true\`.
133
166
  `),
134
167
  })
135
168
  .strict();
@@ -1 +1 @@
1
- {"version":3,"file":"video-concat.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-concat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-concat.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-concat.ts"],"names":[],"mappings":"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"}
@@ -72,9 +72,11 @@ Please note this parameter is independent of adding video fades between sections
72
72
  .boolean()
73
73
  .default(false)
74
74
  .describe(`
75
- When set to \`true\`, the concatenated video will contain chapter markers at the positions where the input videos are joined. Each chapter will be titled with the basename of the corresponding input video file.
75
+ When set to \`true\`, the concatenated video will contain a chapter marker where each input video starts in the output. Each chapter will be titled with the basename of the corresponding input video file. When a \`transition\` is enabled, the incoming clip’s chapter starts at the beginning of its transition, accounting for the overlap between clips.
76
76
 
77
77
  This is useful for navigation in video players that support chapter-based seeking.
78
+
79
+ In MP4 output, chapter markers add a \`bin_data\` track containing the chapter information. This is normal and does not affect video or audio playback.
78
80
  `),
79
81
  sort_by: inputSortBySchema,
80
82
  transition: z
@@ -87,7 +89,7 @@ Specifies the transition effect to apply between concatenated video clips.
87
89
  - \`"crossfade"\`: Applies a crossfade transition where the end of one clip gradually blends into the beginning of the next clip. Both video and audio are crossfaded.
88
90
  - \`"fade_to_black"\`: Applies a fade-to-black transition where each clip fades out to black before the next clip fades in from black.
89
91
 
90
- When using \`"crossfade"\` or \`"fade_to_black"\`, the \`transition_duration\` parameter controls how long the transition lasts. Note that crossfade transitions will reduce the total output duration since clips overlap during the transition.
92
+ When using \`"crossfade"\` or \`"fade_to_black"\`, the \`transition_duration\` parameter controls how long the transition lasts. Both effects overlap adjacent clips and reduce the total output duration by the applied transition duration at each join. The applied duration is capped at half of the shorter clip in each pair.
91
93
  `),
92
94
  transition_duration: z
93
95
  .number()
@@ -97,7 +99,9 @@ The duration of the transition effect in seconds. Only applies when \`transition
97
99
 
98
100
  For example, a value of \`1.0\` creates a 1-second transition between clips. The value can be a float for sub-second precision (e.g., \`0.5\` for 500 milliseconds) and must be greater than \`0\` whenever transitions are enabled.
99
101
 
100
- For crossfade transitions, this is the overlap duration where both clips are visible. For fade_to_black transitions, this is the total time for the fade out and fade in (half for each). The applied transition is capped at half of the shorter clip in each transition pair.
102
+ For crossfade transitions, this is the overlap duration where both clips are visible. For \`"fade_to_black"\`, the video fades out over approximately the first 20% of the transition and fades in over the remaining 80% (about 0.2 seconds out and 0.8 seconds in for a 1-second transition). Audio is crossfaded throughout the transition for both effects.
103
+
104
+ The applied transition is capped at half of the shorter clip in each transition pair. Both effects shorten the output by this applied duration at each join.
101
105
  `),
102
106
  })
103
107
  .strict();
@@ -1 +1 @@
1
- {"version":3,"file":"video-encode.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-encode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,+BAA+B,EAC/B,cAAc,EACd,uBAAuB,EACxB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAY1B,eAAO,MAAM,IAAI,EAAE,cAclB,CAAA;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2DpC,CAAA;AAEX,QAAA,MAAM,YAAY;;;;CAIjB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,+BAA+B,CAC3D,OAAO,kCAAkC,CAAC,KAAK,EAC/C,OAAO,YAAY,CACkE,CAAA;AAEvF,eAAO,MACa,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBACpD,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAChC,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAC/E,CAAA;AAEnB,KAAK,YAAY,GAAG,uBAAuB,CAAC,OAAO,eAAe,CAAC,CAAA;AAEnE,MAAM,MAAM,4BAA4B,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AACjE,MAAM,MAAM,4CAA4C,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;AACvF,MAAM,MAAM,0CAA0C,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAC5F,MAAM,MAAM,+CAA+C,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AACjG,MAAM,MAAM,0DAA0D,GACpE,YAAY,CAAC,4BAA4B,CAAC,CAAA;AAC5C,MAAM,MAAM,+DAA+D,GACzE,YAAY,CAAC,2BAA2B,CAAC,CAAA"}
1
+ {"version":3,"file":"video-encode.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-encode.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,12 @@ export const robotVideoEncodeInstructionsSchema = robotBase
23
23
  robot: z.literal('/video/encode').describe(`
24
24
  The /video/encode Robot is a versatile tool for video processing that handles transcoding, resizing, and watermarking. It supports various formats including modern standards like HEVC (H.265), and provides features such as presets for common devices, custom FFmpeg parameters for powerusers, watermark positioning, and more.
25
25
 
26
+ ## iPhone spatial audio
27
+
28
+ Videos recorded with iPhone spatial audio can contain a stereo AAC track alongside an Apple Positional Audio Codec (APAC) track. When unsupported audio is present, this <dfn>Robot</dfn> keeps one supported audio track by default. Spatial audio is not preserved or converted.
29
+
30
+ Files containing only unsupported audio still fail. Individual audio track selections and stream-copy requests keep the tracks you select; the output format must support copied tracks.
31
+
26
32
  ## Adding text overlays with FFmpeg
27
33
 
28
34
  You can add text overlays to videos using FFmpeg's \`drawtext\` filter through this <dfn>Robot</dfn>'s \`ffmpeg\` parameter. Here are two examples — one with the default font and one with a custom font family name:
@@ -38,7 +38,6 @@ export declare const robotVideoGenerateInstructionsSchema: z.ZodObject<{
38
38
  model: z.ZodOptional<z.ZodString>;
39
39
  prompt: z.ZodString;
40
40
  format: z.ZodOptional<z.ZodEnum<{
41
- gif: "gif";
42
41
  mp4: "mp4";
43
42
  }>>;
44
43
  seed: z.ZodOptional<z.ZodNumber>;
@@ -90,7 +89,6 @@ export declare const robotVideoGenerateInstructionsWithHiddenFieldsSchema: z.Zod
90
89
  model: z.ZodOptional<z.ZodString>;
91
90
  prompt: z.ZodString;
92
91
  format: z.ZodOptional<z.ZodEnum<{
93
- gif: "gif";
94
92
  mp4: "mp4";
95
93
  }>>;
96
94
  seed: z.ZodOptional<z.ZodNumber>;
@@ -147,7 +145,6 @@ export declare const interpolatableRobotVideoGenerateInstructionsSchema: z.ZodOb
147
145
  model: z.ZodOptional<z.ZodString>;
148
146
  prompt: z.ZodString;
149
147
  format: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEnum<{
150
- gif: "gif";
151
148
  mp4: "mp4";
152
149
  }>]>>;
153
150
  seed: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
@@ -201,7 +198,6 @@ export declare const interpolatableRobotVideoGenerateInstructionsWithHiddenField
201
198
  model: z.ZodOptional<z.ZodString>;
202
199
  prompt: z.ZodString;
203
200
  format: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEnum<{
204
- gif: "gif";
205
201
  mp4: "mp4";
206
202
  }>]>>;
207
203
  seed: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
@@ -1 +1 @@
1
- {"version":3,"file":"video-generate.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAY1B,eAAO,MAAM,IAAI,EAAE,cAwBlB,CAAA;AAED,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuCtC,CAAA;AAEX,eAAO,MAAM,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAK7D,CAAA;AAEJ,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAA;AACjG,MAAM,MAAM,8CAA8C,GAAG,CAAC,CAAC,KAAK,CAClE,OAAO,oDAAoD,CAC5D,CAAA;AAED,eAAO,MAAM,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE9D,CAAA;AACD,MAAM,MAAM,4CAA4C,GACtD,iDAAiD,CAAA;AAEnD,MAAM,MAAM,iDAAiD,GAAG,CAAC,CAAC,KAAK,CACrE,OAAO,kDAAkD,CAC1D,CAAA;AAED,eAAO,MAAM,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE9E,CAAA;AACD,MAAM,MAAM,4DAA4D,GAAG,CAAC,CAAC,KAAK,CAChF,OAAO,kEAAkE,CAC1E,CAAA;AACD,MAAM,MAAM,iEAAiE,GAAG,CAAC,CAAC,KAAK,CACrF,OAAO,kEAAkE,CAC1E,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,OAAO,kDAAkD,EACzD,OAAO,kEAAkE,CAM1E,CAAA"}
1
+ {"version":3,"file":"video-generate.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAY1B,eAAO,MAAM,IAAI,EAAE,cAwBlB,CAAA;AAED,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuCtC,CAAA;AAEX,eAAO,MAAM,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAK7D,CAAA;AAEJ,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAA;AACjG,MAAM,MAAM,8CAA8C,GAAG,CAAC,CAAC,KAAK,CAClE,OAAO,oDAAoD,CAC5D,CAAA;AAED,eAAO,MAAM,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE9D,CAAA;AACD,MAAM,MAAM,4CAA4C,GACtD,iDAAiD,CAAA;AAEnD,MAAM,MAAM,iDAAiD,GAAG,CAAC,CAAC,KAAK,CACrE,OAAO,kDAAkD,CAC1D,CAAA;AAED,eAAO,MAAM,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE9E,CAAA;AACD,MAAM,MAAM,4DAA4D,GAAG,CAAC,CAAC,KAAK,CAChF,OAAO,kEAAkE,CAC1E,CAAA;AACD,MAAM,MAAM,iEAAiE,GAAG,CAAC,CAAC,KAAK,CACrF,OAAO,kEAAkE,CAC1E,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,OAAO,kDAAkD,EACzD,OAAO,kEAAkE,CAM1E,CAAA"}
@@ -35,7 +35,7 @@ export const robotVideoGenerateInstructionsSchema = robotBase
35
35
  .string())
36
36
  .describe(`The AI model to use for video generation. Defaults to ${videoGenerateDefaultModelIdentifier}.`),
37
37
  prompt: z.string().describe('The prompt describing the desired video content.'),
38
- format: optionalWithV3Semantics(z.enum(['mp4', 'gif'])).describe('Format of the generated video.'),
38
+ format: optionalWithV3Semantics(z.enum(['mp4'])).describe('Format of the generated video.'),
39
39
  seed: optionalWithV3Semantics(z.number()).describe(robotParameterDocs.seed.description),
40
40
  aspect_ratio: optionalWithV3Semantics(z.string()).describe('Aspect ratio of the generated video.'),
41
41
  height: optionalWithV3Semantics(z.number()).describe('Height of the generated video.'),
@@ -1 +1 @@
1
- {"version":3,"file":"video-merge.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-merge.d.ts","sourceRoot":"","sources":["../../../src/v4/robots/video-merge.ts"],"names":[],"mappings":"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"}