blitzreels 0.1.4 → 0.1.6

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 (214) hide show
  1. package/README.md +55 -25
  2. package/dist/agent-context.d.ts +68 -0
  3. package/dist/agent-context.d.ts.map +1 -0
  4. package/dist/agent-context.js +214 -0
  5. package/dist/agent-context.js.map +1 -0
  6. package/dist/cli-command-routing.d.ts +27 -0
  7. package/dist/cli-command-routing.d.ts.map +1 -0
  8. package/dist/cli-command-routing.js +236 -0
  9. package/dist/cli-command-routing.js.map +1 -0
  10. package/dist/cli-errors.d.ts +31 -0
  11. package/dist/cli-errors.d.ts.map +1 -0
  12. package/dist/cli-errors.js +27 -0
  13. package/dist/cli-errors.js.map +1 -0
  14. package/dist/cli-flag-reader.d.ts +61 -0
  15. package/dist/cli-flag-reader.d.ts.map +1 -0
  16. package/dist/cli-flag-reader.js +207 -0
  17. package/dist/cli-flag-reader.js.map +1 -0
  18. package/dist/cli-http.d.ts +6 -0
  19. package/dist/cli-http.d.ts.map +1 -0
  20. package/dist/cli-http.js +42 -0
  21. package/dist/cli-http.js.map +1 -0
  22. package/dist/cli-presenter.d.ts +24 -0
  23. package/dist/cli-presenter.d.ts.map +1 -0
  24. package/dist/cli-presenter.js +161 -0
  25. package/dist/cli-presenter.js.map +1 -0
  26. package/dist/cli-runtime.d.ts +1 -2
  27. package/dist/cli-runtime.d.ts.map +1 -1
  28. package/dist/cli-runtime.js +2 -2
  29. package/dist/cli-runtime.js.map +1 -1
  30. package/dist/cli-timing.d.ts +4 -0
  31. package/dist/cli-timing.d.ts.map +1 -0
  32. package/dist/cli-timing.js +6 -0
  33. package/dist/cli-timing.js.map +1 -0
  34. package/dist/cli-types.d.ts +52 -0
  35. package/dist/cli-types.d.ts.map +1 -1
  36. package/dist/cli-value-parsers.d.ts +76 -0
  37. package/dist/cli-value-parsers.d.ts.map +1 -0
  38. package/dist/cli-value-parsers.js +271 -0
  39. package/dist/cli-value-parsers.js.map +1 -0
  40. package/dist/command-metadata.d.ts +11 -5
  41. package/dist/command-metadata.d.ts.map +1 -1
  42. package/dist/command-metadata.js +64 -9
  43. package/dist/command-metadata.js.map +1 -1
  44. package/dist/command-registry.d.ts +1 -1
  45. package/dist/command-registry.d.ts.map +1 -1
  46. package/dist/command-registry.js +44 -853
  47. package/dist/command-registry.js.map +1 -1
  48. package/dist/commands/ai-edit.d.ts +45 -0
  49. package/dist/commands/ai-edit.d.ts.map +1 -0
  50. package/dist/commands/ai-edit.js +370 -0
  51. package/dist/commands/ai-edit.js.map +1 -0
  52. package/dist/commands/api.d.ts +20 -0
  53. package/dist/commands/api.d.ts.map +1 -0
  54. package/dist/commands/api.js +56 -0
  55. package/dist/commands/api.js.map +1 -0
  56. package/dist/commands/audio.d.ts +65 -0
  57. package/dist/commands/audio.d.ts.map +1 -0
  58. package/dist/commands/audio.js +264 -0
  59. package/dist/commands/audio.js.map +1 -0
  60. package/dist/commands/auth-runtime.d.ts +24 -0
  61. package/dist/commands/auth-runtime.d.ts.map +1 -0
  62. package/dist/commands/auth-runtime.js +169 -0
  63. package/dist/commands/auth-runtime.js.map +1 -0
  64. package/dist/commands/auth.d.ts +26 -0
  65. package/dist/commands/auth.d.ts.map +1 -0
  66. package/dist/commands/auth.js +59 -0
  67. package/dist/commands/auth.js.map +1 -0
  68. package/dist/commands/caption-command-types.d.ts +66 -0
  69. package/dist/commands/caption-command-types.d.ts.map +1 -0
  70. package/dist/commands/caption-command-types.js +2 -0
  71. package/dist/commands/caption-command-types.js.map +1 -0
  72. package/dist/commands/caption-dry-run.d.ts +66 -0
  73. package/dist/commands/caption-dry-run.d.ts.map +1 -0
  74. package/dist/commands/caption-dry-run.js +225 -0
  75. package/dist/commands/caption-dry-run.js.map +1 -0
  76. package/dist/commands/caption-overrides.d.ts +43 -0
  77. package/dist/commands/caption-overrides.d.ts.map +1 -0
  78. package/dist/commands/caption-overrides.js +245 -0
  79. package/dist/commands/caption-overrides.js.map +1 -0
  80. package/dist/commands/caption-selection.d.ts +72 -0
  81. package/dist/commands/caption-selection.d.ts.map +1 -0
  82. package/dist/commands/caption-selection.js +89 -0
  83. package/dist/commands/caption-selection.js.map +1 -0
  84. package/dist/commands/caption-style-commands.d.ts +3 -0
  85. package/dist/commands/caption-style-commands.d.ts.map +1 -0
  86. package/dist/commands/caption-style-commands.js +240 -0
  87. package/dist/commands/caption-style-commands.js.map +1 -0
  88. package/dist/commands/caption-style-flags.d.ts +30 -0
  89. package/dist/commands/caption-style-flags.d.ts.map +1 -0
  90. package/dist/commands/caption-style-flags.js +257 -0
  91. package/dist/commands/caption-style-flags.js.map +1 -0
  92. package/dist/commands/caption-text-updates.d.ts +21 -0
  93. package/dist/commands/caption-text-updates.d.ts.map +1 -0
  94. package/dist/commands/caption-text-updates.js +23 -0
  95. package/dist/commands/caption-text-updates.js.map +1 -0
  96. package/dist/commands/captions-specs.d.ts +3 -0
  97. package/dist/commands/captions-specs.d.ts.map +1 -0
  98. package/dist/commands/captions-specs.js +241 -0
  99. package/dist/commands/captions-specs.js.map +1 -0
  100. package/dist/commands/captions.d.ts +7 -0
  101. package/dist/commands/captions.d.ts.map +1 -0
  102. package/dist/commands/captions.js +203 -0
  103. package/dist/commands/captions.js.map +1 -0
  104. package/dist/commands/clip-runtime.d.ts +67 -0
  105. package/dist/commands/clip-runtime.d.ts.map +1 -0
  106. package/dist/commands/clip-runtime.js +194 -0
  107. package/dist/commands/clip-runtime.js.map +1 -0
  108. package/dist/commands/clips.d.ts +66 -0
  109. package/dist/commands/clips.d.ts.map +1 -0
  110. package/dist/commands/clips.js +625 -0
  111. package/dist/commands/clips.js.map +1 -0
  112. package/dist/commands/command-operation.d.ts +26 -0
  113. package/dist/commands/command-operation.d.ts.map +1 -0
  114. package/dist/commands/command-operation.js +18 -0
  115. package/dist/commands/command-operation.js.map +1 -0
  116. package/dist/commands/editing-workflow-runtime.d.ts +42 -0
  117. package/dist/commands/editing-workflow-runtime.d.ts.map +1 -0
  118. package/dist/commands/editing-workflow-runtime.js +128 -0
  119. package/dist/commands/editing-workflow-runtime.js.map +1 -0
  120. package/dist/commands/editing-workflows.d.ts +70 -0
  121. package/dist/commands/editing-workflows.d.ts.map +1 -0
  122. package/dist/commands/editing-workflows.js +252 -0
  123. package/dist/commands/editing-workflows.js.map +1 -0
  124. package/dist/commands/effects-runtime.d.ts +64 -0
  125. package/dist/commands/effects-runtime.d.ts.map +1 -0
  126. package/dist/commands/effects-runtime.js +100 -0
  127. package/dist/commands/effects-runtime.js.map +1 -0
  128. package/dist/commands/effects.d.ts +69 -0
  129. package/dist/commands/effects.d.ts.map +1 -0
  130. package/dist/commands/effects.js +281 -0
  131. package/dist/commands/effects.js.map +1 -0
  132. package/dist/commands/exports.d.ts +16 -5
  133. package/dist/commands/exports.d.ts.map +1 -1
  134. package/dist/commands/exports.js +119 -2
  135. package/dist/commands/exports.js.map +1 -1
  136. package/dist/commands/faceless.d.ts +44 -0
  137. package/dist/commands/faceless.d.ts.map +1 -0
  138. package/dist/commands/faceless.js +587 -0
  139. package/dist/commands/faceless.js.map +1 -0
  140. package/dist/commands/formats.d.ts +41 -0
  141. package/dist/commands/formats.d.ts.map +1 -0
  142. package/dist/commands/formats.js +140 -0
  143. package/dist/commands/formats.js.map +1 -0
  144. package/dist/commands/jobs.d.ts +20 -0
  145. package/dist/commands/jobs.d.ts.map +1 -0
  146. package/dist/commands/jobs.js +40 -0
  147. package/dist/commands/jobs.js.map +1 -0
  148. package/dist/commands/media-assets.d.ts +100 -0
  149. package/dist/commands/media-assets.d.ts.map +1 -0
  150. package/dist/commands/media-assets.js +644 -0
  151. package/dist/commands/media-assets.js.map +1 -0
  152. package/dist/commands/media-overlays.d.ts +52 -0
  153. package/dist/commands/media-overlays.d.ts.map +1 -0
  154. package/dist/commands/media-overlays.js +314 -0
  155. package/dist/commands/media-overlays.js.map +1 -0
  156. package/dist/commands/media-runtime.d.ts +61 -0
  157. package/dist/commands/media-runtime.d.ts.map +1 -0
  158. package/dist/commands/media-runtime.js +239 -0
  159. package/dist/commands/media-runtime.js.map +1 -0
  160. package/dist/commands/onboarding.d.ts +51 -0
  161. package/dist/commands/onboarding.d.ts.map +1 -0
  162. package/dist/commands/onboarding.js +452 -0
  163. package/dist/commands/onboarding.js.map +1 -0
  164. package/dist/commands/project-read.d.ts +40 -0
  165. package/dist/commands/project-read.d.ts.map +1 -0
  166. package/dist/commands/project-read.js +184 -0
  167. package/dist/commands/project-read.js.map +1 -0
  168. package/dist/commands/projects.d.ts +16 -5
  169. package/dist/commands/projects.d.ts.map +1 -1
  170. package/dist/commands/projects.js +139 -2
  171. package/dist/commands/projects.js.map +1 -1
  172. package/dist/commands/stock-library.d.ts +72 -0
  173. package/dist/commands/stock-library.d.ts.map +1 -0
  174. package/dist/commands/stock-library.js +175 -0
  175. package/dist/commands/stock-library.js.map +1 -0
  176. package/dist/commands/system.d.ts +16 -0
  177. package/dist/commands/system.d.ts.map +1 -0
  178. package/dist/commands/system.js +147 -0
  179. package/dist/commands/system.js.map +1 -0
  180. package/dist/commands/text-overlay-spec.d.ts +24 -0
  181. package/dist/commands/text-overlay-spec.d.ts.map +1 -0
  182. package/dist/commands/text-overlay-spec.js +228 -0
  183. package/dist/commands/text-overlay-spec.js.map +1 -0
  184. package/dist/commands/text-overlays.d.ts +67 -0
  185. package/dist/commands/text-overlays.d.ts.map +1 -0
  186. package/dist/commands/text-overlays.js +272 -0
  187. package/dist/commands/text-overlays.js.map +1 -0
  188. package/dist/commands/timeline-runtime.d.ts +105 -0
  189. package/dist/commands/timeline-runtime.d.ts.map +1 -0
  190. package/dist/commands/timeline-runtime.js +508 -0
  191. package/dist/commands/timeline-runtime.js.map +1 -0
  192. package/dist/commands/timeline.d.ts +120 -0
  193. package/dist/commands/timeline.d.ts.map +1 -0
  194. package/dist/commands/timeline.js +621 -0
  195. package/dist/commands/timeline.js.map +1 -0
  196. package/dist/commands/workspace-defaults.d.ts +12 -0
  197. package/dist/commands/workspace-defaults.d.ts.map +1 -0
  198. package/dist/commands/workspace-defaults.js +115 -0
  199. package/dist/commands/workspace-defaults.js.map +1 -0
  200. package/dist/commands/workspace.d.ts +50 -0
  201. package/dist/commands/workspace.d.ts.map +1 -0
  202. package/dist/commands/workspace.js +116 -0
  203. package/dist/commands/workspace.js.map +1 -0
  204. package/dist/index.js +485 -5035
  205. package/dist/index.js.map +1 -1
  206. package/dist/preview-first-edit.d.ts +9 -1
  207. package/dist/preview-first-edit.d.ts.map +1 -1
  208. package/dist/preview-first-edit.js +16 -4
  209. package/dist/preview-first-edit.js.map +1 -1
  210. package/dist/update-notifier.d.ts +43 -0
  211. package/dist/update-notifier.d.ts.map +1 -0
  212. package/dist/update-notifier.js +265 -0
  213. package/dist/update-notifier.js.map +1 -0
  214. package/package.json +2 -2
@@ -0,0 +1,100 @@
1
+ export function createEffectsRuntime({ helpers, }) {
2
+ return {
3
+ buildZoomEffectSettings: (params) => buildZoomEffectSettings({ ...params, helpers }),
4
+ getTimelineStartFlag: (params) => getTimelineStartFlag({ ...params, helpers }),
5
+ parseEffectEasing,
6
+ };
7
+ }
8
+ function getTimelineStartFlag({ flags, helpers, }) {
9
+ const value = helpers.getStringFlag({ flags, name: "at" });
10
+ return value === undefined ? undefined : helpers.parseTimecode({ value });
11
+ }
12
+ function parseEffectEasing({ value, }) {
13
+ if (value === undefined) {
14
+ return undefined;
15
+ }
16
+ if (value === "linear" ||
17
+ value === "easeIn" ||
18
+ value === "easeOut" ||
19
+ value === "easeInOut") {
20
+ return value;
21
+ }
22
+ throw new Error("--easing must be linear, easeIn, easeOut, or easeInOut.");
23
+ }
24
+ function parseZoomStyle({ value, }) {
25
+ if (value === undefined) {
26
+ return undefined;
27
+ }
28
+ if (value === "transition" || value === "hard") {
29
+ return value;
30
+ }
31
+ throw new Error("--style must be transition or hard.");
32
+ }
33
+ function parseZoomPhase({ value, }) {
34
+ if (value === undefined) {
35
+ return undefined;
36
+ }
37
+ if (value === "in" ||
38
+ value === "out" ||
39
+ value === "both" ||
40
+ value === "none") {
41
+ return value;
42
+ }
43
+ throw new Error("--phase must be in, out, both, or none.");
44
+ }
45
+ function maybePoint({ x, y, }) {
46
+ if (x === undefined && y === undefined) {
47
+ return undefined;
48
+ }
49
+ return { x: x ?? 0, y: y ?? 0 };
50
+ }
51
+ function buildZoomEffectSettings({ flags, durationSeconds, helpers, }) {
52
+ const fromJson = helpers.parseJsonObjectFlag({
53
+ flags,
54
+ name: "settings-json",
55
+ });
56
+ const scaleStart = helpers.getNumberFlag({ flags, name: "scale-start" });
57
+ const scaleEnd = helpers.getNumberFlag({ flags, name: "scale-end" });
58
+ const translateStart = maybePoint({
59
+ x: helpers.getNumberFlag({ flags, name: "translate-start-x" }),
60
+ y: helpers.getNumberFlag({ flags, name: "translate-start-y" }),
61
+ });
62
+ const translateEnd = maybePoint({
63
+ x: helpers.getNumberFlag({ flags, name: "translate-end-x" }),
64
+ y: helpers.getNumberFlag({ flags, name: "translate-end-y" }),
65
+ });
66
+ const anchor = maybePoint({
67
+ x: helpers.getNumberFlag({ flags, name: "anchor-x" }),
68
+ y: helpers.getNumberFlag({ flags, name: "anchor-y" }),
69
+ });
70
+ return {
71
+ ...(fromJson ?? {}),
72
+ scale: scaleStart === undefined && scaleEnd === undefined
73
+ ? fromJson?.scale
74
+ : {
75
+ start: scaleStart ?? 1,
76
+ end: scaleEnd ?? scaleStart ?? 1,
77
+ },
78
+ translate: translateStart === undefined && translateEnd === undefined
79
+ ? fromJson?.translate
80
+ : {
81
+ start: translateStart ?? { x: 0, y: 0 },
82
+ end: translateEnd ?? translateStart ?? { x: 0, y: 0 },
83
+ },
84
+ anchor: anchor ?? fromJson?.anchor,
85
+ style: parseZoomStyle({
86
+ value: helpers.getStringFlag({ flags, name: "style" }),
87
+ }) ?? fromJson?.style,
88
+ phase: parseZoomPhase({
89
+ value: helpers.getStringFlag({ flags, name: "phase" }),
90
+ }) ?? fromJson?.phase,
91
+ inDurationSeconds: helpers.getNumberFlag({ flags, name: "in-duration" }) ??
92
+ durationSeconds ??
93
+ fromJson?.inDurationSeconds,
94
+ outDurationSeconds: helpers.parseNullableNumberFlag({ flags, name: "out-duration" }) ??
95
+ fromJson?.outDurationSeconds,
96
+ outScale: helpers.parseNullableNumberFlag({ flags, name: "out-scale" }) ??
97
+ fromJson?.outScale,
98
+ };
99
+ }
100
+ //# sourceMappingURL=effects-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects-runtime.js","sourceRoot":"","sources":["../../src/commands/effects-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { Flags } from "../cli-types.js";
2
+ import { type CommandSpec } from "../command-metadata.js";
3
+ import type { CommandOperation } from "./command-operation.js";
4
+ type EffectEasing = "linear" | "easeIn" | "easeOut" | "easeInOut";
5
+ type ZoomSettings = {
6
+ scale: {
7
+ start: number;
8
+ end: number;
9
+ } | undefined;
10
+ translate: {
11
+ start: {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ end: {
16
+ x: number;
17
+ y: number;
18
+ };
19
+ } | undefined;
20
+ anchor: {
21
+ x: number;
22
+ y: number;
23
+ } | undefined;
24
+ style: "transition" | "hard" | undefined;
25
+ phase: "in" | "out" | "both" | "none" | undefined;
26
+ inDurationSeconds: number | undefined;
27
+ outDurationSeconds: number | null | undefined;
28
+ outScale: number | null | undefined;
29
+ };
30
+ export declare const EFFECTS_COMMAND_SPECS: CommandSpec[];
31
+ export type EffectsCommandHelpers = {
32
+ buildZoomEffectSettings: (params: {
33
+ flags: Flags;
34
+ durationSeconds: number | undefined;
35
+ }) => ZoomSettings;
36
+ getNumberFlag: (params: {
37
+ flags: Flags;
38
+ name: string;
39
+ }) => number | undefined;
40
+ getStringFlag: (params: {
41
+ flags: Flags;
42
+ name: string;
43
+ }) => string | undefined;
44
+ getTimelineStartFlag: (params: {
45
+ flags: Flags;
46
+ }) => number | undefined;
47
+ parseEffectEasing: (params: {
48
+ value: string | undefined;
49
+ }) => EffectEasing | undefined;
50
+ parseJsonObjectFlag: (params: {
51
+ flags: Flags;
52
+ name: string;
53
+ }) => Record<string, unknown> | undefined;
54
+ printResult: (params: {
55
+ json: boolean;
56
+ value: unknown;
57
+ human: string[];
58
+ fields?: string[];
59
+ }) => void;
60
+ requireStringFlag: (params: {
61
+ flags: Flags;
62
+ name: string;
63
+ }) => string;
64
+ };
65
+ export declare function createEffectsCommandOperation({ helpers, }: {
66
+ helpers: EffectsCommandHelpers;
67
+ }): CommandOperation;
68
+ export {};
69
+ //# sourceMappingURL=effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../src/commands/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,KAAK,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAClE,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAClD,SAAS,EACL;QACE,KAAK,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAChC,GAAG,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/B,GACD,SAAS,CAAC;IACd,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7C,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClD,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,WAAW,EA2H9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,uBAAuB,EAAE,CAAC,MAAM,EAAE;QAChC,KAAK,EAAE,KAAK,CAAC;QACb,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,KAAK,YAAY,CAAC;IACnB,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,oBAAoB,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,KAAK,YAAY,GAAG,SAAS,CAAC;IAC/B,mBAAmB,EAAE,CAAC,MAAM,EAAE;QAC5B,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC1C,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,KAAK,IAAI,CAAC;IACX,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;CACvE,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,GACR,EAAE;IACD,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,gBAAgB,CA4InB"}
@@ -0,0 +1,281 @@
1
+ import { commandSpec } from "../command-metadata.js";
2
+ export const EFFECTS_COMMAND_SPECS = [
3
+ commandSpec({
4
+ command: ["effects", "zoom", "add"],
5
+ usage: "blitzreels effects zoom add --project-id ID [--at 0] [--duration 1.5] [--scale-start 1] [--scale-end 1.2] [--easing easeInOut] [--style transition|hard] [--phase in|out|both|none] [--anchor-x 0.5] [--anchor-y 0.5] [--translate-start-x 0] [--translate-start-y 0] [--translate-end-x 0] [--translate-end-y 0] [--layer-index 2]",
6
+ flags: [
7
+ "project-id",
8
+ "timeline-item-id",
9
+ "content-item-id",
10
+ "effect-id",
11
+ "name",
12
+ "at",
13
+ "duration",
14
+ "easing",
15
+ "layer-index",
16
+ "order-index",
17
+ "scale-start",
18
+ "scale-end",
19
+ "style",
20
+ "phase",
21
+ "in-duration",
22
+ "out-duration",
23
+ "out-scale",
24
+ "anchor-x",
25
+ "anchor-y",
26
+ "translate-start-x",
27
+ "translate-start-y",
28
+ "translate-end-x",
29
+ "translate-end-y",
30
+ "settings-json",
31
+ ],
32
+ kernelOperationIds: ["timeline.effect.add"],
33
+ }),
34
+ commandSpec({
35
+ command: ["effects", "zoom", "update"],
36
+ usage: "blitzreels effects zoom update --project-id ID --timeline-item-id ID [--scale-end 1.1] [--easing easeInOut] [--duration 1.8] [--style transition|hard] [--phase in|out|both|none] [--settings-json JSON]",
37
+ flags: [
38
+ "project-id",
39
+ "timeline-item-id",
40
+ "easing",
41
+ "duration",
42
+ "scale-start",
43
+ "scale-end",
44
+ "style",
45
+ "phase",
46
+ "in-duration",
47
+ "out-duration",
48
+ "out-scale",
49
+ "anchor-x",
50
+ "anchor-y",
51
+ "translate-start-x",
52
+ "translate-start-y",
53
+ "translate-end-x",
54
+ "translate-end-y",
55
+ "settings-json",
56
+ ],
57
+ kernelOperationIds: ["timeline.effect.update"],
58
+ }),
59
+ commandSpec({
60
+ command: ["effects", "mask", "add"],
61
+ usage: "blitzreels effects mask add --project-id ID [--at 0] [--duration 1] [--settings-json JSON] [--easing easeInOut] [--layer-index 2]",
62
+ flags: [
63
+ "project-id",
64
+ "timeline-item-id",
65
+ "content-item-id",
66
+ "effect-id",
67
+ "name",
68
+ "at",
69
+ "duration",
70
+ "easing",
71
+ "layer-index",
72
+ "order-index",
73
+ "settings-json",
74
+ ],
75
+ kernelOperationIds: ["timeline.effect.add"],
76
+ }),
77
+ commandSpec({
78
+ command: ["effects", "mask", "update"],
79
+ usage: "blitzreels effects mask update --project-id ID --timeline-item-id ID [--duration 1] [--settings-json JSON] [--easing easeInOut]",
80
+ flags: [
81
+ "project-id",
82
+ "timeline-item-id",
83
+ "duration",
84
+ "easing",
85
+ "settings-json",
86
+ ],
87
+ kernelOperationIds: ["timeline.effect.update"],
88
+ }),
89
+ commandSpec({
90
+ command: ["effects", "colorgrade", "add"],
91
+ usage: "blitzreels effects colorgrade add --project-id ID [--at 0] [--duration 1] [--settings-json JSON] [--easing easeInOut] [--layer-index 2]",
92
+ flags: [
93
+ "project-id",
94
+ "timeline-item-id",
95
+ "content-item-id",
96
+ "effect-id",
97
+ "name",
98
+ "at",
99
+ "duration",
100
+ "easing",
101
+ "layer-index",
102
+ "order-index",
103
+ "settings-json",
104
+ ],
105
+ kernelOperationIds: ["timeline.effect.add"],
106
+ }),
107
+ commandSpec({
108
+ command: ["effects", "colorgrade", "update"],
109
+ usage: "blitzreels effects colorgrade update --project-id ID --timeline-item-id ID [--duration 1] [--settings-json JSON] [--easing easeInOut]",
110
+ flags: [
111
+ "project-id",
112
+ "timeline-item-id",
113
+ "duration",
114
+ "easing",
115
+ "settings-json",
116
+ ],
117
+ kernelOperationIds: ["timeline.effect.update"],
118
+ }),
119
+ ];
120
+ export function createEffectsCommandOperation({ helpers, }) {
121
+ return {
122
+ name: "effects",
123
+ matches: ({ command }) => command[0] === "effects",
124
+ handle: async ({ context }) => {
125
+ const [, action, subaction] = context.args.command;
126
+ const flags = context.args.flags;
127
+ if (action === "zoom" && subaction === "add") {
128
+ const durationSeconds = helpers.getNumberFlag({
129
+ flags,
130
+ name: "duration",
131
+ });
132
+ const result = await context.client.effects.zoom.add({
133
+ ...buildEffectTargetInput({ flags, helpers }),
134
+ durationSeconds,
135
+ easing: helpers.parseEffectEasing({
136
+ value: helpers.getStringFlag({ flags, name: "easing" }),
137
+ }),
138
+ settings: helpers.buildZoomEffectSettings({
139
+ flags,
140
+ durationSeconds,
141
+ }),
142
+ });
143
+ helpers.printResult({
144
+ json: context.json,
145
+ value: result,
146
+ human: [`Zoom effect added: ${result.timeline_item_id}`],
147
+ });
148
+ return true;
149
+ }
150
+ if (action === "zoom" && subaction === "update") {
151
+ const durationSeconds = helpers.getNumberFlag({
152
+ flags,
153
+ name: "duration",
154
+ });
155
+ const result = await context.client.effects.zoom.update({
156
+ ...buildEffectUpdateInput({ flags, helpers }),
157
+ durationSeconds,
158
+ easing: helpers.parseEffectEasing({
159
+ value: helpers.getStringFlag({ flags, name: "easing" }),
160
+ }),
161
+ settings: helpers.buildZoomEffectSettings({
162
+ flags,
163
+ durationSeconds,
164
+ }),
165
+ });
166
+ helpers.printResult({
167
+ json: context.json,
168
+ value: result,
169
+ human: [`Zoom effect updated: ${result.timeline_item_id}`],
170
+ });
171
+ return true;
172
+ }
173
+ if (action === "mask" && subaction === "add") {
174
+ const result = await context.client.effects.mask.add({
175
+ ...buildEffectTargetInput({ flags, helpers }),
176
+ durationSeconds: helpers.getNumberFlag({ flags, name: "duration" }),
177
+ easing: helpers.parseEffectEasing({
178
+ value: helpers.getStringFlag({ flags, name: "easing" }),
179
+ }),
180
+ settings: helpers.parseJsonObjectFlag({
181
+ flags,
182
+ name: "settings-json",
183
+ }),
184
+ });
185
+ helpers.printResult({
186
+ json: context.json,
187
+ value: result,
188
+ human: [`Mask effect added: ${result.timeline_item_id}`],
189
+ });
190
+ return true;
191
+ }
192
+ if (action === "mask" && subaction === "update") {
193
+ const result = await context.client.effects.mask.update({
194
+ ...buildEffectUpdateInput({ flags, helpers }),
195
+ durationSeconds: helpers.getNumberFlag({ flags, name: "duration" }),
196
+ easing: helpers.parseEffectEasing({
197
+ value: helpers.getStringFlag({ flags, name: "easing" }),
198
+ }),
199
+ settings: helpers.parseJsonObjectFlag({
200
+ flags,
201
+ name: "settings-json",
202
+ }),
203
+ });
204
+ helpers.printResult({
205
+ json: context.json,
206
+ value: result,
207
+ human: [`Mask effect updated: ${result.timeline_item_id}`],
208
+ });
209
+ return true;
210
+ }
211
+ if (action === "colorgrade" && subaction === "add") {
212
+ const result = await context.client.effects.colorgrade.add({
213
+ ...buildEffectTargetInput({ flags, helpers }),
214
+ durationSeconds: helpers.getNumberFlag({ flags, name: "duration" }),
215
+ easing: helpers.parseEffectEasing({
216
+ value: helpers.getStringFlag({ flags, name: "easing" }),
217
+ }),
218
+ settings: helpers.parseJsonObjectFlag({
219
+ flags,
220
+ name: "settings-json",
221
+ }),
222
+ });
223
+ helpers.printResult({
224
+ json: context.json,
225
+ value: result,
226
+ human: [`Color grade effect added: ${result.timeline_item_id}`],
227
+ });
228
+ return true;
229
+ }
230
+ if (action === "colorgrade" && subaction === "update") {
231
+ const result = await context.client.effects.colorgrade.update({
232
+ ...buildEffectUpdateInput({ flags, helpers }),
233
+ durationSeconds: helpers.getNumberFlag({ flags, name: "duration" }),
234
+ easing: helpers.parseEffectEasing({
235
+ value: helpers.getStringFlag({ flags, name: "easing" }),
236
+ }),
237
+ settings: helpers.parseJsonObjectFlag({
238
+ flags,
239
+ name: "settings-json",
240
+ }),
241
+ });
242
+ helpers.printResult({
243
+ json: context.json,
244
+ value: result,
245
+ human: [`Color grade effect updated: ${result.timeline_item_id}`],
246
+ });
247
+ return true;
248
+ }
249
+ return false;
250
+ },
251
+ buildDryRun: () => undefined,
252
+ };
253
+ }
254
+ function buildEffectTargetInput({ flags, helpers, }) {
255
+ return {
256
+ projectId: helpers.requireStringFlag({ flags, name: "project-id" }),
257
+ timelineItemId: helpers.getStringFlag({
258
+ flags,
259
+ name: "timeline-item-id",
260
+ }),
261
+ contentItemId: helpers.getStringFlag({
262
+ flags,
263
+ name: "content-item-id",
264
+ }),
265
+ effectId: helpers.getStringFlag({ flags, name: "effect-id" }),
266
+ name: helpers.getStringFlag({ flags, name: "name" }),
267
+ startTimeSeconds: helpers.getTimelineStartFlag({ flags }),
268
+ layerIndex: helpers.getNumberFlag({ flags, name: "layer-index" }),
269
+ orderIndex: helpers.getNumberFlag({ flags, name: "order-index" }),
270
+ };
271
+ }
272
+ function buildEffectUpdateInput({ flags, helpers, }) {
273
+ return {
274
+ projectId: helpers.requireStringFlag({ flags, name: "project-id" }),
275
+ timelineItemId: helpers.requireStringFlag({
276
+ flags,
277
+ name: "timeline-item-id",
278
+ }),
279
+ };
280
+ }
281
+ //# sourceMappingURL=effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../src/commands/effects.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,18 @@
1
- import type { CliContext, Flags } from "../cli-types.js";
1
+ import type { Flags } from "../cli-types.js";
2
+ import { type CommandSpec } from "../command-metadata.js";
3
+ import type { DryRunPreview } from "../preview-first-edit.js";
4
+ import type { CommandOperation } from "./command-operation.js";
5
+ export declare const EXPORTS_COMMAND_SPECS: CommandSpec[];
2
6
  export type ExportsCommandHelpers = {
7
+ dryRunRequest: (params: {
8
+ spec: CommandSpec;
9
+ method: string;
10
+ path: string;
11
+ query?: Record<string, unknown>;
12
+ body: unknown;
13
+ followUpRequests?: DryRunPreview["follow_up_requests"];
14
+ notes?: string[];
15
+ }) => DryRunPreview;
3
16
  getNumberFlag: (params: {
4
17
  flags: Flags;
5
18
  name: string;
@@ -23,11 +36,9 @@ export type ExportsCommandHelpers = {
23
36
  fields?: string[];
24
37
  }) => void;
25
38
  };
26
- export declare function handleExportsCommand({ context, action, helpers, defaultWaitIntervalMs, defaultWaitTimeoutMs, }: {
27
- context: CliContext;
28
- action: string | undefined;
39
+ export declare function createExportsCommandOperation({ helpers, defaultWaitIntervalMs, defaultWaitTimeoutMs, }: {
29
40
  helpers: ExportsCommandHelpers;
30
41
  defaultWaitIntervalMs: number;
31
42
  defaultWaitTimeoutMs: number;
32
- }): Promise<boolean>;
43
+ }): CommandOperation;
33
44
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/commands/exports.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,GAAG,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACtE,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,KAAK,IAAI,CAAC;CACZ,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,MAAM,EACN,OAAO,EACP,qBAAqB,EACrB,oBAAoB,GACrB,EAAE;IACD,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,OAAO,CAAC,OAAO,CAAC,CAwEnB"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/commands/exports.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAO,MAAM,qBAAqB,EAAE,WAAW,EAuC9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,WAAW,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC;QACd,gBAAgB,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACvD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,KAAK,aAAa,CAAC;IACpB,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,GAAG,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACtE,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,KAAK,IAAI,CAAC;CACZ,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,qBAAqB,EACrB,oBAAoB,GACrB,EAAE;IACD,OAAO,EAAE,qBAAqB,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,gBAAgB,CAenB"}
@@ -1,6 +1,90 @@
1
1
  import { writeFile } from "node:fs/promises";
2
2
  import { resolve } from "node:path";
3
- export async function handleExportsCommand({ context, action, helpers, defaultWaitIntervalMs, defaultWaitTimeoutMs, }) {
3
+ import { commandSpec } from "../command-metadata.js";
4
+ export const EXPORTS_COMMAND_SPECS = [
5
+ commandSpec({
6
+ command: ["exports", "start"],
7
+ usage: "blitzreels exports start --project-id ID [--cover-frame-seconds 1] [--idempotency-key KEY]",
8
+ flags: [
9
+ "project-id",
10
+ {
11
+ name: "resolution",
12
+ enum: ["720p", "1080p"],
13
+ default: "1080p",
14
+ hidden: true,
15
+ },
16
+ { name: "format", enum: ["mp4", "mov"], default: "mp4", hidden: true },
17
+ "cover-frame-seconds",
18
+ {
19
+ name: "idempotency-key",
20
+ description: "Stable retry key; reuse only with identical inputs.",
21
+ },
22
+ ],
23
+ }),
24
+ commandSpec({
25
+ command: ["exports", "list"],
26
+ usage: "blitzreels exports list --project-id ID [--limit 20] [--offset 0] [--json]",
27
+ flags: ["project-id", "limit", "offset"],
28
+ description: "List exports for a project, newest first.",
29
+ }),
30
+ commandSpec({
31
+ command: ["exports", "wait"],
32
+ usage: "blitzreels exports wait --export-id ID [--interval-ms 3000] [--timeout-ms 1200000] [--json]",
33
+ flags: ["export-id", "interval-ms", "timeout-ms"],
34
+ }),
35
+ commandSpec({
36
+ command: ["exports", "download"],
37
+ usage: "blitzreels exports download --export-id ID --output ./short.mp4",
38
+ flags: ["export-id", "output"],
39
+ }),
40
+ ];
41
+ export function createExportsCommandOperation({ helpers, defaultWaitIntervalMs, defaultWaitTimeoutMs, }) {
42
+ return {
43
+ name: "exports",
44
+ matches: ({ command }) => command[0] === "exports",
45
+ handle: async ({ context }) => handleExportsCommand({
46
+ context,
47
+ action: context.args.command[1],
48
+ helpers,
49
+ defaultWaitIntervalMs,
50
+ defaultWaitTimeoutMs,
51
+ }),
52
+ buildDryRun: ({ context, spec }) => buildExportsDryRun({ context, spec, helpers }),
53
+ };
54
+ }
55
+ function buildExportsDryRun({ context, spec, helpers, }) {
56
+ if (context.args.command[1] === "list") {
57
+ const flags = context.args.flags;
58
+ return helpers.dryRunRequest({
59
+ spec,
60
+ method: "GET",
61
+ path: `/projects/${encodeURIComponent(helpers.requireStringFlag({ flags, name: "project-id" }))}/exports`,
62
+ query: {
63
+ limit: helpers.getNumberFlag({ flags, name: "limit" }),
64
+ offset: helpers.getNumberFlag({ flags, name: "offset" }),
65
+ },
66
+ body: undefined,
67
+ });
68
+ }
69
+ if (context.args.command[1] !== "start") {
70
+ return undefined;
71
+ }
72
+ const flags = context.args.flags;
73
+ return helpers.dryRunRequest({
74
+ spec,
75
+ method: "POST",
76
+ path: `/projects/${encodeURIComponent(helpers.requireStringFlag({ flags, name: "project-id" }))}/export`,
77
+ body: {
78
+ resolution: helpers.getStringFlag({ flags, name: "resolution" }) ?? "1080p",
79
+ format: helpers.getStringFlag({ flags, name: "format" }) ?? "mp4",
80
+ cover_frame_seconds: helpers.getNumberFlag({
81
+ flags,
82
+ name: "cover-frame-seconds",
83
+ }),
84
+ },
85
+ });
86
+ }
87
+ async function handleExportsCommand({ context, action, helpers, defaultWaitIntervalMs, defaultWaitTimeoutMs, }) {
4
88
  if (action === "start") {
5
89
  const result = await context.client.exports.start({
6
90
  projectId: helpers.requireStringFlag({
@@ -10,10 +94,18 @@ export async function handleExportsCommand({ context, action, helpers, defaultWa
10
94
  resolution: helpers.getStringFlag({
11
95
  flags: context.args.flags,
12
96
  name: "resolution",
13
- }),
97
+ }) ?? "1080p",
14
98
  format: helpers.getStringFlag({
15
99
  flags: context.args.flags,
16
100
  name: "format",
101
+ }) ?? "mp4",
102
+ coverFrameSeconds: helpers.getNumberFlag({
103
+ flags: context.args.flags,
104
+ name: "cover-frame-seconds",
105
+ }),
106
+ idempotencyKey: helpers.getStringFlag({
107
+ flags: context.args.flags,
108
+ name: "idempotency-key",
17
109
  }),
18
110
  });
19
111
  helpers.printResult({
@@ -23,6 +115,31 @@ export async function handleExportsCommand({ context, action, helpers, defaultWa
23
115
  });
24
116
  return true;
25
117
  }
118
+ if (action === "list") {
119
+ const result = await context.client.exports.list({
120
+ projectId: helpers.requireStringFlag({
121
+ flags: context.args.flags,
122
+ name: "project-id",
123
+ }),
124
+ limit: helpers.getNumberFlag({
125
+ flags: context.args.flags,
126
+ name: "limit",
127
+ }),
128
+ offset: helpers.getNumberFlag({
129
+ flags: context.args.flags,
130
+ name: "offset",
131
+ }),
132
+ });
133
+ helpers.printResult({
134
+ json: context.json,
135
+ value: result,
136
+ human: [
137
+ `Exports returned: ${result.count}`,
138
+ ...result.exports.map((item) => `${item.export_id} ${item.status} ${item.container_format ?? "-"} ${item.duration_seconds ?? "-"}s`),
139
+ ],
140
+ });
141
+ return true;
142
+ }
26
143
  if (action === "wait") {
27
144
  const result = await context.client.exports.wait({
28
145
  exportId: helpers.requireStringFlag({