transloadit 6.4.0 → 6.6.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 (182) hide show
  1. package/README.md +30 -5
  2. package/dist/Transloadit.d.ts.map +1 -1
  3. package/dist/Transloadit.js +61 -5
  4. package/dist/Transloadit.js.map +1 -1
  5. package/dist/alphalib/renderSimpleValue.d.ts +14 -0
  6. package/dist/alphalib/renderSimpleValue.d.ts.map +1 -0
  7. package/dist/alphalib/renderSimpleValue.js +87 -0
  8. package/dist/alphalib/renderSimpleValue.js.map +1 -0
  9. package/dist/alphalib/truncateString.d.ts +5 -0
  10. package/dist/alphalib/truncateString.d.ts.map +1 -0
  11. package/dist/alphalib/truncateString.js +19 -0
  12. package/dist/alphalib/truncateString.js.map +1 -0
  13. package/dist/alphalib/types/builtinTemplates.d.ts +15 -3
  14. package/dist/alphalib/types/builtinTemplates.d.ts.map +1 -1
  15. package/dist/alphalib/types/builtinTemplates.js +23 -3
  16. package/dist/alphalib/types/builtinTemplates.js.map +1 -1
  17. package/dist/alphalib/types/robots/_instructions-primitives.d.ts +6 -0
  18. package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
  19. package/dist/alphalib/types/robots/_instructions-primitives.js +29 -7
  20. package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
  21. package/dist/alphalib/types/robots/_video-generate.d.ts +34 -0
  22. package/dist/alphalib/types/robots/_video-generate.d.ts.map +1 -0
  23. package/dist/alphalib/types/robots/_video-generate.js +157 -0
  24. package/dist/alphalib/types/robots/_video-generate.js.map +1 -0
  25. package/dist/alphalib/types/robots/ai-chat.d.ts +2 -0
  26. package/dist/alphalib/types/robots/ai-chat.d.ts.map +1 -1
  27. package/dist/alphalib/types/robots/ai-chat.js +7 -5
  28. package/dist/alphalib/types/robots/ai-chat.js.map +1 -1
  29. package/dist/alphalib/types/robots/audio-concat.d.ts.map +1 -1
  30. package/dist/alphalib/types/robots/audio-concat.js +5 -5
  31. package/dist/alphalib/types/robots/audio-concat.js.map +1 -1
  32. package/dist/alphalib/types/robots/azure-import.d.ts.map +1 -1
  33. package/dist/alphalib/types/robots/azure-import.js +3 -3
  34. package/dist/alphalib/types/robots/azure-import.js.map +1 -1
  35. package/dist/alphalib/types/robots/document-convert.d.ts.map +1 -1
  36. package/dist/alphalib/types/robots/document-convert.js +7 -5
  37. package/dist/alphalib/types/robots/document-convert.js.map +1 -1
  38. package/dist/alphalib/types/robots/document-extract.d.ts +8 -8
  39. package/dist/alphalib/types/robots/document-extract.d.ts.map +1 -1
  40. package/dist/alphalib/types/robots/document-extract.js +18 -2
  41. package/dist/alphalib/types/robots/document-extract.js.map +1 -1
  42. package/dist/alphalib/types/robots/document-split.d.ts +12 -0
  43. package/dist/alphalib/types/robots/document-split.d.ts.map +1 -1
  44. package/dist/alphalib/types/robots/document-split.js +15 -2
  45. package/dist/alphalib/types/robots/document-split.js.map +1 -1
  46. package/dist/alphalib/types/robots/file-decompress.d.ts.map +1 -1
  47. package/dist/alphalib/types/robots/file-decompress.js +2 -0
  48. package/dist/alphalib/types/robots/file-decompress.js.map +1 -1
  49. package/dist/alphalib/types/robots/file-preview.d.ts +22 -0
  50. package/dist/alphalib/types/robots/file-preview.d.ts.map +1 -1
  51. package/dist/alphalib/types/robots/file-preview.js +43 -26
  52. package/dist/alphalib/types/robots/file-preview.js.map +1 -1
  53. package/dist/alphalib/types/robots/http-request.d.ts.map +1 -1
  54. package/dist/alphalib/types/robots/http-request.js +9 -14
  55. package/dist/alphalib/types/robots/http-request.js.map +1 -1
  56. package/dist/alphalib/types/robots/image-enhance.d.ts +8 -8
  57. package/dist/alphalib/types/robots/image-enhance.js +2 -2
  58. package/dist/alphalib/types/robots/image-resize.d.ts.map +1 -1
  59. package/dist/alphalib/types/robots/image-resize.js +3 -1
  60. package/dist/alphalib/types/robots/image-resize.js.map +1 -1
  61. package/dist/alphalib/types/robots/image-upscale.js +1 -1
  62. package/dist/alphalib/types/robots/image-upscale.js.map +1 -1
  63. package/dist/alphalib/types/robots/s3-import.d.ts.map +1 -1
  64. package/dist/alphalib/types/robots/s3-import.js +14 -15
  65. package/dist/alphalib/types/robots/s3-import.js.map +1 -1
  66. package/dist/alphalib/types/robots/supabase-store.d.ts +16 -6
  67. package/dist/alphalib/types/robots/supabase-store.d.ts.map +1 -1
  68. package/dist/alphalib/types/robots/supabase-store.js +23 -1
  69. package/dist/alphalib/types/robots/supabase-store.js.map +1 -1
  70. package/dist/alphalib/types/robots/tigris-store.d.ts.map +1 -1
  71. package/dist/alphalib/types/robots/tigris-store.js +3 -4
  72. package/dist/alphalib/types/robots/tigris-store.js.map +1 -1
  73. package/dist/alphalib/types/robots/transloadit-import.d.ts +2 -2
  74. package/dist/alphalib/types/robots/transloadit-import.d.ts.map +1 -1
  75. package/dist/alphalib/types/robots/transloadit-import.js +4 -1
  76. package/dist/alphalib/types/robots/transloadit-import.js.map +1 -1
  77. package/dist/alphalib/types/robots/transloadit-store.d.ts +2 -3
  78. package/dist/alphalib/types/robots/transloadit-store.d.ts.map +1 -1
  79. package/dist/alphalib/types/robots/transloadit-store.js +19 -0
  80. package/dist/alphalib/types/robots/transloadit-store.js.map +1 -1
  81. package/dist/alphalib/types/robots/video-adaptive.d.ts.map +1 -1
  82. package/dist/alphalib/types/robots/video-adaptive.js +12 -0
  83. package/dist/alphalib/types/robots/video-adaptive.js.map +1 -1
  84. package/dist/alphalib/types/robots/video-concat.d.ts.map +1 -1
  85. package/dist/alphalib/types/robots/video-concat.js +9 -9
  86. package/dist/alphalib/types/robots/video-concat.js.map +1 -1
  87. package/dist/alphalib/types/robots/video-thumbs.d.ts +8 -8
  88. package/dist/alphalib/types/robots/video-thumbs.js +8 -8
  89. package/dist/alphalib/types/robots/video-thumbs.js.map +1 -1
  90. package/dist/alphalib/types/robots/vimeo-store.js +1 -1
  91. package/dist/alphalib/types/template.d.ts +3 -3
  92. package/dist/alphalib/types/templateValues.d.ts +83 -0
  93. package/dist/alphalib/types/templateValues.d.ts.map +1 -0
  94. package/dist/alphalib/types/templateValues.js +117 -0
  95. package/dist/alphalib/types/templateValues.js.map +1 -0
  96. package/dist/cli/OutputCtl.d.ts +1 -0
  97. package/dist/cli/OutputCtl.d.ts.map +1 -1
  98. package/dist/cli/OutputCtl.js +1 -1
  99. package/dist/cli/OutputCtl.js.map +1 -1
  100. package/dist/cli/commands/BaseCommand.d.ts +3 -2
  101. package/dist/cli/commands/BaseCommand.d.ts.map +1 -1
  102. package/dist/cli/commands/BaseCommand.js +27 -3
  103. package/dist/cli/commands/BaseCommand.js.map +1 -1
  104. package/dist/cli/commands/assemblies.d.ts +21 -1
  105. package/dist/cli/commands/assemblies.d.ts.map +1 -1
  106. package/dist/cli/commands/assemblies.js +584 -91
  107. package/dist/cli/commands/assemblies.js.map +1 -1
  108. package/dist/cli/commands/templates.d.ts +1 -1
  109. package/dist/cli/commands/templates.d.ts.map +1 -1
  110. package/dist/cli/commands/templates.js +57 -67
  111. package/dist/cli/commands/templates.js.map +1 -1
  112. package/dist/cli/errors.d.ts +8 -0
  113. package/dist/cli/errors.d.ts.map +1 -0
  114. package/dist/cli/errors.js +28 -0
  115. package/dist/cli/errors.js.map +1 -0
  116. package/dist/cli/helpers.d.ts.map +1 -1
  117. package/dist/cli/helpers.js +22 -0
  118. package/dist/cli/helpers.js.map +1 -1
  119. package/dist/cli/intentRuntime.d.ts +1 -0
  120. package/dist/cli/intentRuntime.d.ts.map +1 -1
  121. package/dist/cli/intentRuntime.js +9 -3
  122. package/dist/cli/intentRuntime.js.map +1 -1
  123. package/dist/cli/resultFiles.d.ts +1 -0
  124. package/dist/cli/resultFiles.d.ts.map +1 -1
  125. package/dist/cli/resultFiles.js.map +1 -1
  126. package/dist/cli/resultUrls.d.ts +2 -1
  127. package/dist/cli/resultUrls.d.ts.map +1 -1
  128. package/dist/cli/resultUrls.js +6 -3
  129. package/dist/cli/resultUrls.js.map +1 -1
  130. package/dist/cli/stepsInput.d.ts +1 -1
  131. package/dist/cli/stepsInput.d.ts.map +1 -1
  132. package/dist/cli/stepsInput.js +48 -6
  133. package/dist/cli/stepsInput.js.map +1 -1
  134. package/dist/cli/types.d.ts +66 -0
  135. package/dist/cli/types.d.ts.map +1 -1
  136. package/dist/cli/types.js +29 -0
  137. package/dist/cli/types.js.map +1 -1
  138. package/dist/tus.d.ts +7 -2
  139. package/dist/tus.d.ts.map +1 -1
  140. package/dist/tus.js +58 -4
  141. package/dist/tus.js.map +1 -1
  142. package/package.json +1 -1
  143. package/src/Transloadit.ts +65 -4
  144. package/src/alphalib/renderSimpleValue.ts +120 -0
  145. package/src/alphalib/truncateString.ts +23 -0
  146. package/src/alphalib/types/builtinTemplates.ts +33 -3
  147. package/src/alphalib/types/robots/_instructions-primitives.ts +34 -7
  148. package/src/alphalib/types/robots/_video-generate.ts +211 -0
  149. package/src/alphalib/types/robots/ai-chat.ts +8 -5
  150. package/src/alphalib/types/robots/audio-concat.ts +5 -4
  151. package/src/alphalib/types/robots/azure-import.ts +3 -4
  152. package/src/alphalib/types/robots/document-convert.ts +8 -5
  153. package/src/alphalib/types/robots/document-extract.ts +18 -2
  154. package/src/alphalib/types/robots/document-split.ts +17 -2
  155. package/src/alphalib/types/robots/file-decompress.ts +2 -0
  156. package/src/alphalib/types/robots/file-preview.ts +44 -25
  157. package/src/alphalib/types/robots/http-request.ts +9 -13
  158. package/src/alphalib/types/robots/image-enhance.ts +2 -2
  159. package/src/alphalib/types/robots/image-resize.ts +3 -1
  160. package/src/alphalib/types/robots/image-upscale.ts +1 -1
  161. package/src/alphalib/types/robots/s3-import.ts +14 -15
  162. package/src/alphalib/types/robots/supabase-store.ts +23 -1
  163. package/src/alphalib/types/robots/tigris-store.ts +2 -3
  164. package/src/alphalib/types/robots/transloadit-import.ts +4 -1
  165. package/src/alphalib/types/robots/transloadit-store.ts +19 -0
  166. package/src/alphalib/types/robots/video-adaptive.ts +12 -0
  167. package/src/alphalib/types/robots/video-concat.ts +9 -8
  168. package/src/alphalib/types/robots/video-thumbs.ts +8 -8
  169. package/src/alphalib/types/robots/vimeo-store.ts +1 -1
  170. package/src/alphalib/types/templateValues.ts +157 -0
  171. package/src/cli/OutputCtl.ts +2 -1
  172. package/src/cli/commands/BaseCommand.ts +29 -7
  173. package/src/cli/commands/assemblies.ts +775 -118
  174. package/src/cli/commands/templates.ts +93 -98
  175. package/src/cli/errors.ts +34 -0
  176. package/src/cli/helpers.ts +21 -0
  177. package/src/cli/intentRuntime.ts +10 -3
  178. package/src/cli/resultFiles.ts +1 -0
  179. package/src/cli/resultUrls.ts +11 -3
  180. package/src/cli/stepsInput.ts +54 -6
  181. package/src/cli/types.ts +35 -0
  182. package/src/tus.ts +72 -5
@@ -1,5 +1,71 @@
1
1
  import type { Steps } from '../alphalib/types/template.ts';
2
2
  import { z } from 'zod';
3
+ /** Project unchecked API responses to CLI diagnostics without nested request metadata. */
4
+ export declare const assemblySummarySchema: z.ZodObject<{
5
+ assembly_id: z.ZodCatch<z.ZodOptional<z.ZodString>>;
6
+ assembly_url: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
7
+ assembly_ssl_url: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
8
+ ok: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
9
+ error: z.ZodCatch<z.ZodOptional<z.ZodString>>;
10
+ message: z.ZodCatch<z.ZodOptional<z.ZodString>>;
11
+ ignored_error_count: z.ZodCatch<z.ZodDefault<z.ZodNumber>>;
12
+ ignored_errors: z.ZodCatch<z.ZodDefault<z.ZodArray<z.ZodCatch<z.ZodObject<{
13
+ step: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
14
+ phase: z.ZodCatch<z.ZodOptional<z.ZodString>>;
15
+ error: z.ZodCatch<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
16
+ code: z.ZodCatch<z.ZodOptional<z.ZodString>>;
17
+ message: z.ZodCatch<z.ZodOptional<z.ZodString>>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ code?: string | undefined;
20
+ message?: string | undefined;
21
+ }, {
22
+ code?: unknown;
23
+ message?: unknown;
24
+ }>]>>>;
25
+ message: z.ZodCatch<z.ZodOptional<z.ZodString>>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ error?: string | {
28
+ code?: string | undefined;
29
+ message?: string | undefined;
30
+ } | undefined;
31
+ message?: string | undefined;
32
+ step?: string | null | undefined;
33
+ phase?: string | undefined;
34
+ }, {
35
+ error?: unknown;
36
+ message?: unknown;
37
+ step?: unknown;
38
+ phase?: unknown;
39
+ }>>, "many">>>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ ignored_errors: {
42
+ error?: string | {
43
+ code?: string | undefined;
44
+ message?: string | undefined;
45
+ } | undefined;
46
+ message?: string | undefined;
47
+ step?: string | null | undefined;
48
+ phase?: string | undefined;
49
+ }[];
50
+ ignored_error_count: number;
51
+ error?: string | undefined;
52
+ message?: string | undefined;
53
+ ok?: string | null | undefined;
54
+ assembly_id?: string | undefined;
55
+ assembly_url?: string | null | undefined;
56
+ assembly_ssl_url?: string | null | undefined;
57
+ }, {
58
+ error?: unknown;
59
+ message?: unknown;
60
+ ok?: unknown;
61
+ assembly_id?: unknown;
62
+ assembly_url?: unknown;
63
+ assembly_ssl_url?: unknown;
64
+ ignored_errors?: unknown;
65
+ ignored_error_count?: unknown;
66
+ }>;
67
+ /** Public diagnostics from one Assembly, excluding instructions and request internals. */
68
+ export type AssemblySummary = z.infer<typeof assemblySummarySchema>;
3
69
  declare const APIErrorSchema: z.ZodObject<{
4
70
  error: z.ZodString;
5
71
  message: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,QAAA,MAAM,cAAc;;;;;;;;;EAGlB,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAG3E,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,gBAAgB,CAAA;CACvB;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAKjD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAGD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,cAAc,CAE/E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAsBvB,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShC,CAAA;AAEF,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAGnE,QAAA,MAAM,cAAc;;;;;;;;;EAGlB,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAG3E,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,gBAAgB,CAAA;CACvB;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAKjD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAGD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,cAAc,CAE/E"}
package/dist/cli/types.js CHANGED
@@ -1,4 +1,33 @@
1
1
  import { z } from 'zod';
2
+ const ignoredErrorDetailsSchema = z
3
+ .union([
4
+ z.string(),
5
+ z.object({
6
+ code: z.string().optional().catch(undefined),
7
+ message: z.string().optional().catch(undefined),
8
+ }),
9
+ ])
10
+ .optional()
11
+ .catch(undefined);
12
+ const ignoredErrorSummarySchema = z
13
+ .object({
14
+ step: z.string().nullable().optional().catch(undefined),
15
+ phase: z.string().optional().catch(undefined),
16
+ error: ignoredErrorDetailsSchema,
17
+ message: z.string().optional().catch(undefined),
18
+ })
19
+ .catch({});
20
+ /** Project unchecked API responses to CLI diagnostics without nested request metadata. */
21
+ export const assemblySummarySchema = z.object({
22
+ assembly_id: z.string().optional().catch(undefined),
23
+ assembly_url: z.string().nullable().optional().catch(undefined),
24
+ assembly_ssl_url: z.string().nullable().optional().catch(undefined),
25
+ ok: z.string().nullable().optional().catch(undefined),
26
+ error: z.string().optional().catch(undefined),
27
+ message: z.string().optional().catch(undefined),
28
+ ignored_error_count: z.number().finite().int().nonnegative().default(0).catch(0),
29
+ ignored_errors: z.array(ignoredErrorSummarySchema).default([]).catch([]),
30
+ });
2
31
  // Zod schemas for runtime validation
3
32
  const APIErrorSchema = z.object({
4
33
  error: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,qCAAqC;AACrC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAGF,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,IAAI,EAAE,CAAC;aACJ,MAAM,CAAC;YACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC;aACD,QAAQ,EAAE;QACb,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAeF,uCAAuC;AACvC,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAChD,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,yBAAyB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAC3D,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAA;AAClD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,yBAAyB,GAAG,CAAC;KAChC,KAAK,CAAC;IACL,CAAC,CAAC,MAAM,EAAE;IACV,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;KAChD,CAAC;CACH,CAAC;KACD,QAAQ,EAAE;KACV,KAAK,CAAC,SAAS,CAAC,CAAA;AAEnB,MAAM,yBAAyB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC7C,KAAK,EAAE,yBAAyB;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAChD,CAAC;KACD,KAAK,CAAC,EAAE,CAAC,CAAA;AAEZ,0FAA0F;AAC1F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC/D,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACnE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC/C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;CACzE,CAAC,CAAA;AAKF,qCAAqC;AACrC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAGF,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,IAAI,EAAE,CAAC;aACJ,MAAM,CAAC;YACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC;aACD,QAAQ,EAAE;QACb,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAeF,uCAAuC;AACvC,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAChD,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,yBAAyB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAC3D,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAA;AAClD,CAAC"}
package/dist/tus.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { Readable } from 'node:stream';
2
2
  import type { AssemblyStatus } from './alphalib/types/assemblyStatus.ts';
3
3
  import type { UploadProgress } from './Transloadit.ts';
4
+ import { ReadStream } from 'node:fs';
4
5
  export type UploadBehavior = 'await' | 'background' | 'none';
5
6
  export interface Stream {
6
7
  path?: string;
@@ -15,9 +16,13 @@ interface SendTusRequestOptions {
15
16
  signal?: AbortSignal;
16
17
  uploadUrls?: Record<string, string>;
17
18
  uploadBehavior?: UploadBehavior;
19
+ onFileStreamOpened?: (stream: ReadStream) => void;
20
+ onFileSliceStarted?: (slice: Promise<unknown>) => void;
18
21
  }
19
- export declare function sendTusRequest({ streamsMap, assembly, requestedChunkSize, uploadConcurrency, onProgress, signal, uploadUrls, uploadBehavior, }: SendTusRequestOptions): Promise<{
22
+ interface SendTusRequestResult {
20
23
  uploadUrls: Record<string, string>;
21
- }>;
24
+ uploadsComplete?: Promise<unknown>;
25
+ }
26
+ export declare function sendTusRequest({ streamsMap, assembly, requestedChunkSize, uploadConcurrency, onProgress, signal, uploadUrls, uploadBehavior, onFileStreamOpened, onFileSliceStarted, }: SendTusRequestOptions): Promise<SendTusRequestResult>;
22
27
  export {};
23
28
  //# sourceMappingURL=tus.d.ts.map
package/dist/tus.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tus.d.ts","sourceRoot":"","sources":["../src/tus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAYtD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAA;AAE5D,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,QAAQ,CAAA;CACjB;AAED,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,QAAQ,EAAE,cAAc,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AAED,wBAAsB,cAAc,CAAC,EACnC,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,UAAU,EACV,cAAwB,GACzB,EAAE,qBAAqB;;GA8NvB"}
1
+ {"version":3,"file":"tus.d.ts","sourceRoot":"","sources":["../src/tus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAW3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAWpC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAA;AAE5D,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,QAAQ,CAAA;CACjB;AAED,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,QAAQ,EAAE,cAAc,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IACjD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;CACvD;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CACnC;AAED,wBAAsB,cAAc,CAAC,EACnC,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,UAAU,EACV,cAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAgRvD"}
package/dist/tus.js CHANGED
@@ -1,11 +1,12 @@
1
+ import { ReadStream } from 'node:fs';
1
2
  import { stat } from 'node:fs/promises';
2
3
  import { basename } from 'node:path';
3
4
  import debug from 'debug';
4
5
  import pMap from 'p-map';
5
- import { Upload } from 'tus-js-client';
6
+ import { defaultOptions, Upload } from 'tus-js-client';
6
7
  const log = debug('transloadit');
7
8
  const logWarn = debug('transloadit:warn');
8
- export async function sendTusRequest({ streamsMap, assembly, requestedChunkSize, uploadConcurrency, onProgress, signal, uploadUrls, uploadBehavior = 'await', }) {
9
+ export async function sendTusRequest({ streamsMap, assembly, requestedChunkSize, uploadConcurrency, onProgress, signal, uploadUrls, uploadBehavior = 'await', onFileStreamOpened, onFileSliceStarted, }) {
9
10
  const streamLabels = Object.keys(streamsMap);
10
11
  let totalBytes = 0;
11
12
  let lastEmittedProgress = 0;
@@ -143,6 +144,25 @@ export async function sendTusRequest({ streamsMap, assembly, requestedChunkSize,
143
144
  fieldname: label,
144
145
  filename,
145
146
  },
147
+ httpStack: {
148
+ createRequest(method, url) {
149
+ const request = defaultOptions.httpStack.createRequest(method, url);
150
+ const send = request.send.bind(request);
151
+ request.send = (body) => {
152
+ // tus awaits pre-request hooks, so queued aborts must be checked at send itself.
153
+ if (signal?.aborted) {
154
+ // File setup can finish after abort() and reset tus's aborted state.
155
+ tusUpload.abort();
156
+ return Promise.reject(new Error('Upload aborted'));
157
+ }
158
+ return send(body);
159
+ };
160
+ return request;
161
+ },
162
+ getName() {
163
+ return defaultOptions.httpStack.getName();
164
+ },
165
+ },
146
166
  onError: reject,
147
167
  onProgress: onTusProgress,
148
168
  onSuccess: resolve,
@@ -158,6 +178,39 @@ export async function sendTusRequest({ streamsMap, assembly, requestedChunkSize,
158
178
  }
159
179
  },
160
180
  };
181
+ if (onFileStreamOpened) {
182
+ // tus opens a separate ReadStream for each chunk; abort() leaves those streams open.
183
+ // Track those chunks even when the original file stream belongs to the caller.
184
+ tusOptions.fileReader = {
185
+ async openFile(input, chunkSize) {
186
+ const source = await defaultOptions.fileReader.openFile(input, chunkSize);
187
+ return {
188
+ size: source.size,
189
+ async slice(start, end) {
190
+ if (signal?.aborted)
191
+ throw new Error('Upload aborted');
192
+ const reading = source.slice(start, end).then((chunk) => {
193
+ // tus-js-client declares platform-specific chunk values as any.
194
+ const value = chunk.value;
195
+ if (value instanceof ReadStream)
196
+ onFileStreamOpened(value);
197
+ if (signal?.aborted)
198
+ throw new Error('Upload aborted');
199
+ return chunk;
200
+ });
201
+ // A file slice can open its stream before the promise resolves.
202
+ if (input instanceof ReadStream && input.path != null) {
203
+ onFileSliceStarted?.(reading);
204
+ }
205
+ return await reading;
206
+ },
207
+ close() {
208
+ source.close();
209
+ },
210
+ };
211
+ },
212
+ };
213
+ }
161
214
  // tus-js-client doesn't like undefined/null
162
215
  if (size != null)
163
216
  tusOptions.uploadSize = size;
@@ -189,14 +242,15 @@ export async function sendTusRequest({ streamsMap, assembly, requestedChunkSize,
189
242
  }
190
243
  await pMap(streamLabels, uploadSingleStream, { concurrency: uploadConcurrency, signal });
191
244
  await Promise.all(uploadUrlPromises);
245
+ const uploadsComplete = Promise.allSettled(completionPromises);
192
246
  if (uploadBehavior === 'await') {
193
247
  await Promise.all(completionPromises);
194
248
  }
195
249
  else {
196
- Promise.allSettled(completionPromises).catch((err) => {
250
+ uploadsComplete.catch((err) => {
197
251
  logWarn('Background upload failed', err);
198
252
  });
199
253
  }
200
- return { uploadUrls: uploadUrlsResult };
254
+ return { uploadUrls: uploadUrlsResult, uploadsComplete };
201
255
  }
202
256
  //# sourceMappingURL=tus.js.map
package/dist/tus.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tus.js","sourceRoot":"","sources":["../src/tus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tus.js","sourceRoot":"","sources":["../src/tus.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "transloadit",
3
- "version": "6.4.0",
3
+ "version": "6.6.0",
4
4
  "description": "Node.js SDK for Transloadit",
5
5
  "homepage": "https://github.com/transloadit/node-sdk/tree/main/packages/node",
6
6
  "bugs": {
@@ -1,3 +1,4 @@
1
+ import type { ReadStream } from 'node:fs'
1
2
  import type { Readable } from 'node:stream'
2
3
 
3
4
  import type {
@@ -72,9 +73,11 @@ import type { Stream, UploadBehavior } from './tus.ts'
72
73
 
73
74
  import * as assert from 'node:assert'
74
75
  import { randomUUID } from 'node:crypto'
76
+ import { addAbortListener, setMaxListeners } from 'node:events'
75
77
  import { constants, createReadStream } from 'node:fs'
76
78
  import { access, stat } from 'node:fs/promises'
77
79
  import { basename } from 'node:path'
80
+ import { finished } from 'node:stream/promises'
78
81
  import { setTimeout as delay } from 'node:timers/promises'
79
82
 
80
83
  import { compileAssemblyInstructionsFromPrompt } from '@transloadit/utils'
@@ -241,11 +244,15 @@ const toReadableUpload = (label: string, value: Readable | IntoStreamInput): Rea
241
244
  return readable ? value : intoStream(value)
242
245
  }
243
246
 
244
- const buildStreamsMap = (descriptors: UploadDescriptor[]): Record<string, Stream> =>
247
+ const buildStreamsMap = (
248
+ descriptors: UploadDescriptor[],
249
+ onFileStreamOpened?: (stream: ReadStream) => void,
250
+ ): Record<string, Stream> =>
245
251
  Object.fromEntries(
246
252
  descriptors.map((descriptor) => {
247
253
  if (descriptor.path) {
248
254
  const stream = createReadStream(descriptor.path)
255
+ onFileStreamOpened?.(stream)
249
256
  return [descriptor.label, { stream, path: descriptor.path }]
250
257
  }
251
258
 
@@ -705,7 +712,7 @@ export class Transloadit {
705
712
  assemblyId,
706
713
  expectedUploads,
707
714
  onAssemblyCreated,
708
- signal,
715
+ signal: callerSignal,
709
716
  uploadBehavior = 'await',
710
717
  } = opts
711
718
 
@@ -722,6 +729,34 @@ export class Transloadit {
722
729
  effectiveAssemblyId = randomUUID().replace(/-/g, '')
723
730
  }
724
731
  const urlSuffix = `/assemblies/${effectiveAssemblyId}`
732
+ const uploadAbort = new AbortController()
733
+ const signal = uploadAbort.signal
734
+ // This private signal coordinates every concurrent upload and its queue.
735
+ setMaxListeners(0, signal)
736
+ if (callerSignal?.aborted) uploadAbort.abort(callerSignal.reason)
737
+ // Older supported Node releases retain AbortSignal.any() dependencies indefinitely.
738
+ const callerAbort =
739
+ callerSignal && !callerSignal.aborted
740
+ ? addAbortListener(callerSignal, () => uploadAbort.abort(callerSignal.reason))
741
+ : undefined
742
+ const detachCallerAbort = (): void => {
743
+ callerAbort?.[Symbol.dispose]()
744
+ }
745
+ let backgroundUploadsComplete: Promise<unknown> | undefined
746
+ const openedFileStreams = new Set<ReadStream>()
747
+ const pendingFileSlices = new Set<Promise<unknown>>()
748
+ const onFileStreamOpened = (stream: ReadStream): void => {
749
+ // Register before I/O can emit close, so cleanup cannot miss that event.
750
+ openedFileStreams.add(stream)
751
+ stream.once('close', () => openedFileStreams.delete(stream))
752
+ }
753
+ const onFileSliceStarted = (slice: Promise<unknown>): void => {
754
+ pendingFileSlices.add(slice)
755
+ const remove = (): void => {
756
+ pendingFileSlices.delete(slice)
757
+ }
758
+ slice.then(remove, remove)
759
+ }
725
760
 
726
761
  // We want to be able to return the promise immediately with custom data
727
762
  const promise = (async () => {
@@ -746,7 +781,7 @@ export class Transloadit {
746
781
  })),
747
782
  ]
748
783
 
749
- const allStreamsMap = buildStreamsMap(descriptors)
784
+ const allStreamsMap = buildStreamsMap(descriptors, onFileStreamOpened)
750
785
 
751
786
  const allStreams = Object.values(allStreamsMap)
752
787
 
@@ -779,7 +814,7 @@ export class Transloadit {
779
814
  onAssemblyCreated?.(result)
780
815
 
781
816
  if (Object.keys(allStreamsMap).length > 0) {
782
- const { uploadUrls } = await sendTusRequest({
817
+ const { uploadUrls, uploadsComplete } = await sendTusRequest({
783
818
  streamsMap: allStreamsMap,
784
819
  assembly: result,
785
820
  onProgress: onUploadProgress,
@@ -787,7 +822,10 @@ export class Transloadit {
787
822
  uploadConcurrency,
788
823
  signal,
789
824
  uploadBehavior,
825
+ onFileStreamOpened,
826
+ onFileSliceStarted,
790
827
  })
828
+ if (uploadBehavior === 'background') backgroundUploadsComplete = uploadsComplete
791
829
  if (uploadBehavior !== 'await' && Object.keys(uploadUrls).length > 0) {
792
830
  result.upload_urls = uploadUrls
793
831
  }
@@ -813,6 +851,29 @@ export class Transloadit {
813
851
 
814
852
  return Promise.race([createAssemblyAndUpload(), streamErrorPromise])
815
853
  })()
854
+ .catch(async (error: unknown) => {
855
+ uploadAbort.abort()
856
+ // File descriptors must be closed before callers can remove their temporary files.
857
+ // Destroyed, unread streams reject finished(); cleanup must preserve the creation error.
858
+ while (openedFileStreams.size > 0 || pendingFileSlices.size > 0) {
859
+ await Promise.allSettled(pendingFileSlices)
860
+ await Promise.allSettled(
861
+ [...openedFileStreams].map((stream) => {
862
+ const closed = finished(stream, { cleanup: true })
863
+ stream.destroy()
864
+ return closed
865
+ }),
866
+ )
867
+ }
868
+ throw error
869
+ })
870
+ .finally(() => {
871
+ if (backgroundUploadsComplete && !signal.aborted) {
872
+ backgroundUploadsComplete.then(detachCallerAbort, detachCallerAbort)
873
+ return
874
+ }
875
+ detachCallerAbort()
876
+ })
816
877
 
817
878
  // This allows the user to use or log the assemblyId even before it has been created for easier debugging
818
879
  return Object.assign(promise, { assemblyId: effectiveAssemblyId })
@@ -0,0 +1,120 @@
1
+ import { truncateCodePointsWithEllipsis, truncateStringWithEllipsis } from './truncateString.ts'
2
+
3
+ /** A safe scalar rendering policy for one customer-visible validation reason. */
4
+ export interface SimpleValueReason {
5
+ readonly message: string
6
+ readonly suffix?: string
7
+ readonly value: 'integer-prefix' | 'string' | 'trimmed-string'
8
+ }
9
+
10
+ type SimpleArrayItem = string | number | boolean | bigint | null | Date
11
+
12
+ function isSimpleArrayItem(value: unknown): value is SimpleArrayItem {
13
+ return (
14
+ value === null ||
15
+ value instanceof Date ||
16
+ typeof value === 'string' ||
17
+ typeof value === 'number' ||
18
+ typeof value === 'boolean' ||
19
+ typeof value === 'bigint'
20
+ )
21
+ }
22
+
23
+ function isSimpleValueArray(value: unknown): value is SimpleArrayItem[] {
24
+ return Array.isArray(value) && value.every(isSimpleArrayItem)
25
+ }
26
+
27
+ function renderSimpleArrayItem(value: SimpleArrayItem): string {
28
+ return value === null ? '' : String(value)
29
+ }
30
+
31
+ function* renderSimpleArrayCharacters(
32
+ values: readonly SimpleArrayItem[],
33
+ trim: boolean,
34
+ ): Generator<string, void, undefined> {
35
+ for (let index = 0; index < values.length; index += 1) {
36
+ if (index > 0) {
37
+ yield ','
38
+ }
39
+ let renderedItem = renderSimpleArrayItem(values[index])
40
+ if (trim && index === 0) {
41
+ renderedItem = renderedItem.trimStart()
42
+ }
43
+ if (trim && index === values.length - 1) {
44
+ renderedItem = renderedItem.trimEnd()
45
+ }
46
+ yield* renderedItem
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Renders a scalar, Date, or flat scalar array without traversing arbitrary objects. Semantic
52
+ * predicates use the complete string; customer-facing reasons use the bounded formatter below.
53
+ */
54
+ export function renderSimpleValueAsString(value: unknown): string | undefined {
55
+ if (
56
+ typeof value === 'string' ||
57
+ typeof value === 'number' ||
58
+ typeof value === 'boolean' ||
59
+ typeof value === 'bigint'
60
+ ) {
61
+ return String(value)
62
+ }
63
+ if (value === null) {
64
+ return 'null'
65
+ }
66
+ if (value instanceof Date) {
67
+ return Date.prototype.toString.call(value)
68
+ }
69
+ if (isSimpleValueArray(value)) {
70
+ return value.map(renderSimpleArrayItem).join(',')
71
+ }
72
+ return undefined
73
+ }
74
+
75
+ /** Formats a bounded validation reason without traversing or stringifying arbitrary objects. */
76
+ export function formatSimpleValueReason(
77
+ reason: SimpleValueReason,
78
+ value: unknown,
79
+ maxCharacters: number,
80
+ ): string {
81
+ const suffix = reason.suffix ?? ''
82
+ if (reason.value === 'integer-prefix') {
83
+ const renderedValue = renderSimpleValueAsString(value)
84
+ if (renderedValue == null) {
85
+ return `${reason.message}${suffix}`
86
+ }
87
+
88
+ const parsedValue = Number.parseInt(renderedValue, 10)
89
+ const normalizedValue = Number.isFinite(parsedValue) ? String(parsedValue) : renderedValue
90
+ if (normalizedValue === '') {
91
+ return `${reason.message}${suffix}`
92
+ }
93
+ return `${reason.message}: ${truncateStringWithEllipsis(normalizedValue, maxCharacters)}${suffix}`
94
+ }
95
+
96
+ if (Array.isArray(value)) {
97
+ if (!isSimpleValueArray(value)) {
98
+ return `${reason.message}${suffix}`
99
+ }
100
+ const renderedValue = truncateCodePointsWithEllipsis(
101
+ renderSimpleArrayCharacters(value, reason.value === 'trimmed-string'),
102
+ maxCharacters,
103
+ )
104
+ return renderedValue === ''
105
+ ? `${reason.message}${suffix}`
106
+ : `${reason.message}: ${renderedValue}${suffix}`
107
+ }
108
+
109
+ const renderedValue = renderSimpleValueAsString(value)
110
+ if (renderedValue == null) {
111
+ return `${reason.message}${suffix}`
112
+ }
113
+
114
+ const normalizedValue = reason.value === 'trimmed-string' ? renderedValue.trim() : renderedValue
115
+ if (normalizedValue === '') {
116
+ return `${reason.message}${suffix}`
117
+ }
118
+
119
+ return `${reason.message}: ${truncateStringWithEllipsis(normalizedValue, maxCharacters)}${suffix}`
120
+ }
@@ -0,0 +1,23 @@
1
+ /** Lazily truncates Unicode code points and marks a truncated value with an ellipsis. */
2
+ export function truncateCodePointsWithEllipsis(
3
+ codePoints: Iterable<string>,
4
+ maxCharacters: number,
5
+ ): string {
6
+ if (!Number.isSafeInteger(maxCharacters) || maxCharacters < 0) {
7
+ throw new Error('String truncation requires a nonnegative safe character limit')
8
+ }
9
+
10
+ const characters: string[] = []
11
+ for (const character of codePoints) {
12
+ if (characters.length === maxCharacters) {
13
+ return `${characters.join('')}…`
14
+ }
15
+ characters.push(character)
16
+ }
17
+ return characters.join('')
18
+ }
19
+
20
+ /** Truncates a string by Unicode code points and marks a truncated value with an ellipsis. */
21
+ export function truncateStringWithEllipsis(value: string, maxCharacters: number): string {
22
+ return truncateCodePointsWithEllipsis(value, maxCharacters)
23
+ }
@@ -27,12 +27,14 @@ export type BuiltinTemplateDoc = z.infer<typeof builtinTemplateDocSchema>
27
27
  export const builtinTemplateFieldsSchema = z.record(z.string(), z.unknown()).nullable()
28
28
 
29
29
  /**
30
- * Runtime catalog projection used by Builtin clients. API2 supplies descriptions, field schemas
31
- * and defaults; absent and null schemas remain distinct, and neither declares a usable contract.
30
+ * Runtime catalog projection used by Builtin clients. API2 supplies descriptions, tool-ready
31
+ * summaries, field schemas and defaults; absent and null schemas remain distinct, and neither
32
+ * declares a usable contract.
32
33
  */
33
34
  export const builtinTemplateCatalogItemSchema = z.object({
34
35
  id: z.string(),
35
36
  description: z.string().optional(),
37
+ summary: z.string().optional(),
36
38
  fields_schema: builtinTemplateFieldsSchema.optional(),
37
39
  content: z.object({ fields: z.record(z.string(), z.unknown()).default({}) }),
38
40
  })
@@ -43,7 +45,8 @@ export type BuiltinTemplateCatalogItem = z.infer<typeof builtinTemplateCatalogIt
43
45
  /**
44
46
  * MCP channel approvals: exact reviewed versions and temporarily excluded field values.
45
47
  * Membership is explicit; a catalog schema, a new Builtin version, or Storage eligibility does
46
- * not grant MCP approval. Keep runtime descriptions, schemas and defaults in API2's catalog.
48
+ * not grant MCP approval. Keep runtime descriptions, summaries, schemas and defaults in API2's
49
+ * catalog.
47
50
  */
48
51
  export const mcpBuiltinTemplateManifest: Readonly<
49
52
  Record<string, Readonly<Record<string, readonly string[]>>>
@@ -76,3 +79,30 @@ export const mcpBuiltinInputUrlMaxCounts: Readonly<Record<string, number>> = {
76
79
  'builtin/transcribe@0.0.1': 10,
77
80
  'builtin/video-covers@0.0.1': 10,
78
81
  }
82
+
83
+ /**
84
+ * Static summaries of the MCP-approved Builtins, for clients that describe them before reading
85
+ * API2's catalog, such as server cards and directory listings. API2 authors each `summary` beside
86
+ * its Builtin definition and serves the same text in the Template list; its tests keep this copy
87
+ * equal to those definitions, so edit the definition first.
88
+ */
89
+ export const mcpBuiltinTemplateSummaries: Readonly<Record<string, string>> = {
90
+ 'builtin/caption-video@0.0.1':
91
+ 'Transcribe the speech in videos and burn plain captions into each original video. Returns the captioned video and its SRT captions. Fields set the caption font_size (default 16), position, font_color and border_color. The automatic provider detects the spoken language; target_language (such as french) hints it, and source_language (default en-US) sets it for provider aws or gcp. Captions are never translated.',
92
+ 'builtin/capture-webpage@0.0.1':
93
+ 'Capture a public HTTP(S) webpage (url) or an uploaded HTML file as a PNG, JPEG or PDF. Returns one image or PDF per captured page. Defaults to a full-page PNG 1024 pixels wide; set fullpage to false for a fixed width × height viewport, and use delay or wait_until for late-loading pages. A url takes precedence over uploaded HTML. No custom headers, credentials or browser actions are sent.',
94
+ 'builtin/convert-to-pdf@0.0.1':
95
+ 'Convert Office documents, HTML, Markdown and plain text files to PDF. Returns one PDF per input. Fields set the paper size (pdf_format, default Letter), pdf_margin, background printing, and the Markdown flavor and theme. Paper and margin fields apply to HTML and Markdown; Office and text files keep the converter’s native layout.',
96
+ 'builtin/encode-video@0.0.1':
97
+ 'Encode videos for web playback with an MP4 or WebM preset. Returns one encoded video per input. Defaults to the 720p MP4 preset with turbo encoding; width or height override that preset dimension. Output size depends on the source and preset.',
98
+ 'builtin/extract-text@0.0.1':
99
+ 'Extract text from images, PDFs and Office documents as plain text (default) or JSON. Returns one text result per input by default. Images use OCR; documents try embedded text before OCR, and Office files are converted to PDF first. Fields set text_method, the OCR provider (AWS or GCP), page_range, password and text_granularity, where page returns one result per page; those last three need native extraction. Unsupported formats are skipped.',
100
+ 'builtin/prepare-image@0.0.1':
101
+ 'Prepare images for a website: auto-orient, fit within 1600×1600 pixels without enlarging, encode as WebP at quality 75, strip metadata and keep transparency. Returns one image per input. Fields set width and height (w, h), format (f), quality (q), resize strategy (r), background color (bg) and metadata stripping (strip). JPEG output needs an opaque background.',
102
+ 'builtin/remove-background@0.0.1':
103
+ 'Remove the background from photos. Returns the foreground of each image as a transparent PNG. Fields set the provider (automatic by default); only provider transloadit also allows GIF or WebP output, or keeping the background instead of the foreground.',
104
+ 'builtin/transcribe@0.0.1':
105
+ 'Transcribe the speech in audio or video files. Returns one transcript per input as timestamped JSON (default), plain text, SRT or WebVTT. The automatic provider detects the spoken language; target_language (such as french) hints it, and source_language (default en-US) sets it for provider aws or gcp. Transcripts are never translated.',
106
+ 'builtin/video-covers@0.0.1':
107
+ 'Extract cover images from videos. Returns 8 JPEG frames per video by default, taken at regular intervals, or frames at exact offsets in seconds or percentages. Set smart to true to have AI scoring pick the strongest count frames from up to three candidates per frame, capped by smart_max_candidates but never fewer than count. Fields also set format (JPEG or PNG), width and height, which default to the video’s dimensions.',
108
+ }