gooseworks 0.5.7-dev.46.ade46de2 → 0.5.8

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 (55) hide show
  1. package/dist/kit/core/run.d.ts +1 -5
  2. package/dist/kit/core/run.d.ts.map +1 -1
  3. package/dist/kit/core/run.js +0 -10
  4. package/dist/kit/core/run.js.map +1 -1
  5. package/dist/kit/core/style.d.ts +0 -1
  6. package/dist/kit/core/style.d.ts.map +1 -1
  7. package/dist/kit/maker/encode.d.ts +0 -5
  8. package/dist/kit/maker/encode.d.ts.map +1 -1
  9. package/dist/kit/maker/encode.js +1 -7
  10. package/dist/kit/maker/encode.js.map +1 -1
  11. package/dist/kit/maker/inputs.d.ts +3 -48
  12. package/dist/kit/maker/inputs.d.ts.map +1 -1
  13. package/dist/kit/maker/inputs.js +22 -151
  14. package/dist/kit/maker/inputs.js.map +1 -1
  15. package/dist/kit/maker/make.d.ts +1 -20
  16. package/dist/kit/maker/make.d.ts.map +1 -1
  17. package/dist/kit/maker/make.js +19 -125
  18. package/dist/kit/maker/make.js.map +1 -1
  19. package/dist/kit/maker/page.d.ts.map +1 -1
  20. package/dist/kit/maker/page.js +1 -49
  21. package/dist/kit/maker/page.js.map +1 -1
  22. package/dist/kit/maker/parts/html-frames/1.1.0/part.json +199 -0
  23. package/dist/kit/maker/parts/html-frames/src/part.d.ts.map +1 -1
  24. package/dist/kit/maker/parts/html-frames/src/part.js +1 -4
  25. package/dist/kit/maker/parts/html-frames/src/part.js.map +1 -1
  26. package/dist/kit/maker/runtime.d.ts.map +1 -1
  27. package/dist/kit/maker/runtime.js +7 -54
  28. package/dist/kit/maker/runtime.js.map +1 -1
  29. package/dist/skills/master-skill.d.ts +3 -3
  30. package/dist/skills/master-skill.d.ts.map +1 -1
  31. package/dist/skills/master-skill.js +18 -20
  32. package/dist/skills/master-skill.js.map +1 -1
  33. package/dist/skills/production-video-skills.json +5 -0
  34. package/package.json +3 -3
  35. package/skills/goose-video/SKILL.md +599 -23
  36. package/skills/goose-video-local/SKILL.md +1572 -3
  37. package/skills/make-custom-video/SKILL.md +689 -23
  38. package/skills/manifest.json +4 -4
  39. package/dist/kit/maker/cues.d.ts +0 -67
  40. package/dist/kit/maker/cues.d.ts.map +0 -1
  41. package/dist/kit/maker/cues.js +0 -204
  42. package/dist/kit/maker/cues.js.map +0 -1
  43. package/dist/kit/maker/facts.d.ts +0 -46
  44. package/dist/kit/maker/facts.d.ts.map +0 -1
  45. package/dist/kit/maker/facts.js +0 -159
  46. package/dist/kit/maker/facts.js.map +0 -1
  47. package/dist/kit/maker/parts/html-frames/1.2.0/part.json +0 -1083
  48. package/dist/kit/maker/timing.d.ts +0 -74
  49. package/dist/kit/maker/timing.d.ts.map +0 -1
  50. package/dist/kit/maker/timing.js +0 -152
  51. package/dist/kit/maker/timing.js.map +0 -1
  52. package/dist/kit/maker/under.d.ts +0 -126
  53. package/dist/kit/maker/under.d.ts.map +0 -1
  54. package/dist/kit/maker/under.js +0 -299
  55. package/dist/kit/maker/under.js.map +0 -1
@@ -1,17 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.countWords = exports.LIMITS = exports.SHORT_SIDES = exports.DESIGN_SIZE = void 0;
3
+ exports.LIMITS = exports.SHORT_SIDES = exports.DESIGN_SIZE = void 0;
4
4
  exports.isFileRef = isFileRef;
5
+ exports.countWords = countWords;
5
6
  exports.readInputs = readInputs;
6
7
  // The html-frames inputs, read and checked before anything starts. Bundled
7
8
  // into the part (part.mjs) with the input schema from its part.json and the
8
9
  // kit core's schema checker, so the part refuses exactly what part.json does,
9
10
  // however it is called.
10
11
  const schema_1 = require("../core/schema");
11
- const part_json_1 = require("./parts/html-frames/1.2.0/part.json");
12
- const timing_1 = require("./timing");
13
- Object.defineProperty(exports, "countWords", { enumerable: true, get: function () { return timing_1.countWords; } });
14
- const under_1 = require("./under");
12
+ const part_json_1 = require("./parts/html-frames/1.1.0/part.json");
15
13
  /** Every frame page is laid out at a 1080 px short side (CSS px). */
16
14
  exports.DESIGN_SIZE = {
17
15
  '9:16': { width: 1080, height: 1920 },
@@ -32,8 +30,6 @@ exports.LIMITS = {
32
30
  maxWords: 200,
33
31
  textChars: 2000,
34
32
  };
35
- /** The inputs that set the video's length; exactly one is given. */
36
- const LENGTH_SOURCES = ['duration_s', 'scene_s', 'pace', 'speech', 'under'];
37
33
  function isObject(value) {
38
34
  return !!value && typeof value === 'object' && !Array.isArray(value);
39
35
  }
@@ -63,6 +59,12 @@ function optionalText(value, at, fail) {
63
59
  fail(`${at} is longer than ${exports.LIMITS.textChars} characters`);
64
60
  return value;
65
61
  }
62
+ /** Words as a reader counts them: runs of letters or digits, joined by ' or -. */
63
+ function countWords(text) {
64
+ if (!text)
65
+ return 0;
66
+ return text.split(/\s+/u).filter((token) => /[\p{L}\p{N}]/u.test(token)).length;
67
+ }
66
68
  function scenesOf(value, maxWords, fail) {
67
69
  if (!Array.isArray(value) || value.length === 0)
68
70
  fail('scenes should list at least one scene');
@@ -82,7 +84,7 @@ function scenesOf(value, maxWords, fail) {
82
84
  const line = optionalText(raw.line, `${at}.line`, fail);
83
85
  const onScreen = optionalText(raw.on_screen, `${at}.on_screen`, fail);
84
86
  for (const [field, text] of [['line', line], ['on_screen', onScreen]]) {
85
- const words = (0, timing_1.countWords)(text);
87
+ const words = countWords(text);
86
88
  if (words > maxWords) {
87
89
  fail(`scene ${index + 1} (${id}) has ${words} words in ${field}; this style allows ${maxWords} per scene`);
88
90
  }
@@ -93,11 +95,7 @@ function scenesOf(value, maxWords, fail) {
93
95
  else
94
96
  picture = optionalText(raw.picture, `${at}.picture`, fail);
95
97
  const image = raw.image === undefined || raw.image === null ? null : fileOf(raw.image, `${at}.image`, ['image'], fail);
96
- const speaker = optionalText(raw.speaker, `${at}.speaker`, fail);
97
- if (raw.extra !== undefined && raw.extra !== null && !isObject(raw.extra))
98
- fail(`${at}.extra should be an object`);
99
- const extra = isObject(raw.extra) ? raw.extra : null;
100
- return { id, index, line, on_screen: onScreen, picture, image, speaker, extra };
98
+ return { id, index, line, on_screen: onScreen, picture, image };
101
99
  });
102
100
  }
103
101
  function productsOf(value, fail) {
@@ -162,53 +160,8 @@ function brandOf(value, fail) {
162
160
  }
163
161
  return { name, logo, colors, fonts, cta };
164
162
  }
165
- function mediaOf(value, fail) {
166
- if (value === undefined || value === null)
167
- return [];
168
- if (!Array.isArray(value))
169
- fail('media should be a list');
170
- const ids = new Set();
171
- return value.map((raw, i) => {
172
- const at = `media[${i}]`;
173
- if (!isObject(raw))
174
- fail(`${at} should be an object`);
175
- if (typeof raw.id !== 'string' || !raw.id)
176
- fail(`${at}.id should be text`);
177
- if (ids.has(raw.id))
178
- fail(`${at}.id "${raw.id}" is used twice`);
179
- ids.add(raw.id);
180
- return { id: raw.id, image: fileOf(raw.image, `${at}.image`, ['image'], fail) };
181
- });
182
- }
183
- function secondsOf(ms) {
184
- return typeof ms === 'number' && Number.isFinite(ms) ? Math.round(ms) / 1000 : null;
185
- }
186
- function footageOf(value, fail) {
187
- if (value === undefined || value === null)
188
- return [];
189
- if (!Array.isArray(value))
190
- fail('footage should be a list');
191
- return value.map((raw, index) => {
192
- const at = `footage[${index}]`;
193
- if (!isObject(raw))
194
- fail(`${at} should be an object`);
195
- const start = secondsOf(raw.start_ms);
196
- const end = secondsOf(raw.end_ms);
197
- if (start !== null && end !== null && end < start)
198
- fail(`${at} ends before it starts`);
199
- return {
200
- index,
201
- scene_id: typeof raw.scene_id === 'string' && raw.scene_id ? raw.scene_id : null,
202
- kind: typeof raw.kind === 'string' && raw.kind ? raw.kind : 'video',
203
- start_s: start,
204
- end_s: end,
205
- crop: raw.crop ?? null,
206
- fit: typeof raw.fit === 'string' && raw.fit ? raw.fit : null,
207
- };
208
- });
209
- }
210
163
  /** Reads the part's inputs into a render plan, or throws bad_input naming the problem. */
211
- function readInputs(raw, ctx, measured = {}) {
164
+ function readInputs(raw, ctx) {
212
165
  const fail = (detail) => {
213
166
  throw ctx.error('bad_input', detail);
214
167
  };
@@ -235,32 +188,7 @@ function readInputs(raw, ctx, measured = {}) {
235
188
  if (typeof aspect !== 'string' || !(aspect in exports.DESIGN_SIZE))
236
189
  fail(`aspect should be one of ${Object.keys(exports.DESIGN_SIZE).join(', ')}`);
237
190
  const design = exports.DESIGN_SIZE[aspect];
238
- const given = LENGTH_SOURCES.filter((key) => raw[key] !== undefined && raw[key] !== null);
239
- if (given.length !== 1)
240
- fail('give exactly one of duration_s (the whole video), scene_s (each scene), pace, speech or under (a video to draw over)');
241
- const source = given[0];
242
- let under = null;
243
- if (source === 'under') {
244
- const file = fileOf(raw.under, 'under', ['video'], fail);
245
- if (!isObject(raw.under_timeline))
246
- fail('under_timeline should be the timeline of the video to draw over');
247
- const timeline = raw.under_timeline;
248
- const info = measured.under === undefined ? null : measured.under;
249
- if (measured.under === null)
250
- fail('the video to draw over could not be read');
251
- // Before it is measured (a dry read), the timeline's own length stands in.
252
- const seconds = info?.seconds ?? (typeof file.duration_s === 'number' ? file.duration_s : timeline.duration_s);
253
- under = {
254
- file,
255
- timeline,
256
- info: info ?? { seconds, width: timeline.width, height: timeline.height, fps: timeline.fps, hasAudio: false },
257
- };
258
- }
259
- else if (raw.under_timeline !== undefined && raw.under_timeline !== null)
260
- fail('under_timeline is given without under');
261
- // Drawn over a video, the frame rate follows it unless the step sets one.
262
- const underFps = under?.info.fps ? Math.min(exports.LIMITS.maxFps, Math.max(1, Math.round(under.info.fps))) : null;
263
- const fps = raw.fps ?? underFps ?? 30;
191
+ const fps = raw.fps ?? 30;
264
192
  if (typeof fps !== 'number' || !Number.isInteger(fps) || fps < 1 || fps > exports.LIMITS.maxFps)
265
193
  fail(`fps should be a whole number from 1 to ${exports.LIMITS.maxFps}`);
266
194
  const shortSide = raw.short_side ?? 1080;
@@ -268,73 +196,25 @@ function readInputs(raw, ctx, measured = {}) {
268
196
  fail(`short_side should be ${exports.SHORT_SIDES.join(' or ')}`);
269
197
  const scale = shortSide / 1080;
270
198
  const output = { width: Math.round(design.width * scale), height: Math.round(design.height * scale) };
271
- // Scenes timed by a voice track or held by their words start where these say.
272
- const speechIn = source === 'speech' ? raw.speech : null;
273
- let timed = null;
274
- if (speechIn) {
275
- const times = (0, timing_1.speechTimes)(scenes.map((scene) => scene.id), speechIn, typeof raw.tail_s === 'number' ? raw.tail_s : 0);
276
- if (typeof times === 'string')
277
- fail(times);
278
- timed = times;
279
- }
280
- else if (source === 'pace') {
281
- const holds = (0, timing_1.paceHolds)(scenes, raw.pace);
282
- if (typeof holds === 'string')
283
- fail(holds);
284
- timed = (0, timing_1.startsOfHolds)(holds);
285
- }
286
- const seconds = under
287
- ? under.info.seconds
288
- : timed
289
- ? timed.seconds
290
- : source === 'duration_s'
291
- ? raw.duration_s
292
- : raw.scene_s * scenes.length;
199
+ const hasTotal = raw.duration_s !== undefined && raw.duration_s !== null;
200
+ const hasPerScene = raw.scene_s !== undefined && raw.scene_s !== null;
201
+ if (hasTotal === hasPerScene)
202
+ fail('give exactly one of duration_s (the whole video) or scene_s (each scene)');
203
+ const seconds = hasTotal ? raw.duration_s : raw.scene_s * scenes.length;
293
204
  if (typeof seconds !== 'number' || !Number.isFinite(seconds) || seconds < exports.LIMITS.minSeconds || seconds > exports.LIMITS.maxSeconds) {
294
205
  fail(`the video would be ${String(seconds)} seconds; it must be ${exports.LIMITS.minSeconds} to ${exports.LIMITS.maxSeconds}`);
295
206
  }
296
207
  const frameCount = Math.round(seconds * fps);
297
208
  if (frameCount < scenes.length)
298
209
  fail(`${scenes.length} scenes need at least ${scenes.length} frames; the video has ${frameCount}`);
299
- let sceneFrames;
300
- if (timed) {
301
- const frames = (0, timing_1.framesOfStarts)(timed.starts, fps, frameCount);
302
- if (!Array.isArray(frames)) {
303
- const scene = scenes[frames.empty];
304
- fail(`scene ${frames.empty + 1} (${scene.id}) gets no time at ${fps} fps: ${source === 'speech' ? 'the speech gives it none (a scene with no speech needs a gap, or tail_s at the end)' : 'its pace hold is too short'}`);
305
- }
306
- sceneFrames = frames;
307
- }
308
- else if (under) {
309
- // Scenes take the real times of the video drawn over.
310
- const fromUnder = (0, under_1.underSceneFrames)(scenes.map((scene) => scene.id), under.timeline, fps, frameCount);
311
- if (!fromUnder) {
312
- fail(`the plan's ${scenes.length} scenes do not match the ${under.timeline.scenes.length} scenes of the video to draw over (by id or in order)`);
313
- }
314
- sceneFrames = fromUnder;
315
- }
316
- else {
317
- // Scenes share the video evenly, on whole frames, so every scene starts on a frame.
318
- sceneFrames = scenes.map((_, i) => Math.round((i * frameCount) / scenes.length));
319
- sceneFrames.push(frameCount);
320
- }
210
+ // Scenes share the video evenly, on whole frames, so every scene starts on a frame.
211
+ const sceneFrames = scenes.map((_, i) => Math.round((i * frameCount) / scenes.length));
212
+ sceneFrames.push(frameCount);
321
213
  const values = raw.values ?? {};
322
214
  if (!isObject(values))
323
215
  fail('values should be an object');
324
- if (Buffer.byteLength(JSON.stringify(values), 'utf8') > 64 * 1024)
216
+ if (JSON.stringify(values).length > 64 * 1024)
325
217
  fail('values is larger than 64 KB');
326
- let captionZone = null;
327
- if (raw.caption_zone !== undefined && raw.caption_zone !== null) {
328
- captionZone = (0, timing_1.clipZone)(raw.caption_zone, design);
329
- if (!captionZone)
330
- fail(`caption_zone lies outside the ${design.width}x${design.height} page`);
331
- if (!(0, timing_1.zoneOnVideo)(captionZone, scale, output))
332
- fail(`caption_zone is less than a pixel of the ${output.width}x${output.height} video`);
333
- }
334
- const endCardScenes = typeof raw.end_card_scenes === 'number' ? raw.end_card_scenes : 0;
335
- if (endCardScenes > scenes.length)
336
- fail(`end_card_scenes is ${endCardScenes}, but there are only ${scenes.length} scenes`);
337
- const speech = speechIn ?? under?.timeline.speech ?? [];
338
218
  return {
339
219
  template,
340
220
  frames,
@@ -350,15 +230,6 @@ function readInputs(raw, ctx, measured = {}) {
350
230
  output,
351
231
  scale,
352
232
  values,
353
- under,
354
- speech,
355
- words: (0, timing_1.wordsByScene)(speech, sceneFrames, fps),
356
- captionZone,
357
- endCardScenes,
358
- skip: raw.skip_blank === true && scenes.every(timing_1.isBlankScene),
359
- media: mediaOf(raw.media, fail),
360
- footage: footageOf(raw.footage, fail),
361
- facts: raw.facts === true,
362
233
  };
363
234
  }
364
235
  //# sourceMappingURL=inputs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/kit/maker/inputs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/kit/maker/inputs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import type { FileRef, PartContext, Timeline } from '../part-interface';
2
- import { type MakerSpec } from './inputs';
3
2
  /** What the maker gives back; the part returns the first three. */
4
3
  export interface MakerResult {
5
4
  video: FileRef;
@@ -8,31 +7,13 @@ export interface MakerResult {
8
7
  /** sha256 of every captured frame, in order. */
9
8
  frameHashes: string[];
10
9
  }
11
- type MakerContext = Pick<PartContext, 'workDir' | 'tmpDir' | 'tools' | 'browser' | 'progress' | 'log' | 'error' | 'signal' | 'file'> & {
12
- /** The part's folder; its assets/sfx bank is read only when the page marks sound cues. */
13
- part?: Pick<PartContext['part'], 'dir'>;
14
- };
15
- /** Where the page drew the brand's logo, in the page's CSS pixels. */
16
- export interface LogoRect {
17
- x: number;
18
- y: number;
19
- w: number;
20
- h: number;
21
- }
22
- export declare function timelineOf(spec: MakerSpec, logo: LogoRect | null): Timeline;
10
+ type MakerContext = Pick<PartContext, 'workDir' | 'tmpDir' | 'tools' | 'browser' | 'progress' | 'log' | 'error' | 'signal' | 'file'>;
23
11
  export interface MakerOptions {
24
12
  /** Working space the maker may use, in bytes: page files, frames, segments and the video. */
25
13
  diskLimitBytes?: number;
26
14
  }
27
15
  /** The working space html-frames may use; part.json's needs.disk_mb says the same. */
28
16
  export declare const DISK_LIMIT_MB = 1024;
29
- /** The video, refusing a step that skip_blank would leave empty. */
30
17
  export declare function makeVideo(rawInputs: unknown, ctx: MakerContext, options?: MakerOptions): Promise<MakerResult>;
31
- /**
32
- * What the part runs: the video, or null when skip_blank is on and no scene
33
- * has on-screen text or a line (the step then gives no outputs, and the kit
34
- * leaves out every reference to them).
35
- */
36
- export declare function makeOrSkip(rawInputs: unknown, ctx: MakerContext, options?: MakerOptions): Promise<MakerResult | null>;
37
18
  export {};
38
19
  //# sourceMappingURL=make.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../../src/kit/maker/make.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAW,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAIjF,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAKjE,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAKD,KAAK,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG;IACrI,0FAA0F;IAC1F,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;CACzC,CAAC;AAEF,sEAAsE;AACtE,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAmC3E;AAqCD,MAAM,WAAW,YAAY;IAC3B,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,sFAAsF;AACtF,eAAO,MAAM,aAAa,OAAO,CAAC;AASlC,oEAAoE;AACpE,wBAAsB,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAIvH;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqO/H"}
1
+ {"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../../src/kit/maker/make.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAW,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMjF,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAKD,KAAK,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AAsErI,MAAM,WAAW,YAAY;IAC3B,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,sFAAsF;AACtF,eAAO,MAAM,aAAa,OAAO,CAAC;AASlC,wBAAsB,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkKvH"}
@@ -34,9 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.DISK_LIMIT_MB = void 0;
37
- exports.timelineOf = timelineOf;
38
37
  exports.makeVideo = makeVideo;
39
- exports.makeOrSkip = makeOrSkip;
40
38
  // The web video maker: lays out a style's frame page with the plan's scenes,
41
39
  // products and brand in the kit's Chromium, moves its virtual clock one frame
42
40
  // at a time, captures each frame and encodes them with the kit's ffmpeg.
@@ -47,33 +45,25 @@ const node_crypto_1 = require("node:crypto");
47
45
  const promises_1 = require("node:fs/promises");
48
46
  const path = __importStar(require("node:path"));
49
47
  const node_url_1 = require("node:url");
50
- const cues_1 = require("./cues");
51
48
  const encode_1 = require("./encode");
52
49
  const images_1 = require("./images");
53
50
  const inputs_1 = require("./inputs");
54
51
  const page_1 = require("./page");
55
- const timing_1 = require("./timing");
56
- const under_1 = require("./under");
57
52
  /** One frame may take this long before the maker gives up on the page. */
58
53
  const FRAME_TIMEOUT_MS = 60_000;
59
54
  function timelineOf(spec, logo) {
60
- const size = { duration_s: spec.frameCount / spec.fps, width: spec.output.width, height: spec.output.height, fps: spec.fps };
61
- // Drawn over a video, the video's own scenes, speech, end card and zones carry through.
62
- const scenes = spec.scenes.map((scene) => ({
63
- id: scene.id,
64
- start_s: spec.sceneFrames[scene.index] / spec.fps,
65
- end_s: spec.sceneFrames[scene.index + 1] / spec.fps,
66
- }));
67
- // Plan scenes that shared a one-scene video drawn over are this video's scenes.
68
- const shared = spec.under && (0, under_1.underIsShared)(spec.scenes.map((scene) => scene.id), spec.under.timeline);
69
- const timeline = spec.under
70
- ? (0, under_1.passThroughTimeline)(spec.under.timeline, size, shared ? scenes : undefined)
71
- : { ...size, scenes, speech: spec.speech };
72
- // The last end_card_scenes scenes are the end card (over a video, this replaces its own).
73
- if (spec.endCardScenes > 0) {
74
- timeline.end_card = { start_s: spec.sceneFrames[spec.scenes.length - spec.endCardScenes] / spec.fps, end_s: size.duration_s };
75
- }
76
- const zones = [];
55
+ const timeline = {
56
+ duration_s: spec.frameCount / spec.fps,
57
+ width: spec.output.width,
58
+ height: spec.output.height,
59
+ fps: spec.fps,
60
+ scenes: spec.scenes.map((scene) => ({
61
+ id: scene.id,
62
+ start_s: spec.sceneFrames[scene.index] / spec.fps,
63
+ end_s: spec.sceneFrames[scene.index + 1] / spec.fps,
64
+ })),
65
+ speech: [],
66
+ };
77
67
  // The logo's box on the output picture, so the final check can look for the logo where it is drawn.
78
68
  if (logo) {
79
69
  const k = spec.scale;
@@ -82,18 +72,8 @@ function timelineOf(spec, logo) {
82
72
  const x1 = Math.min(spec.output.width, Math.ceil((logo.x + logo.w) * k));
83
73
  const y1 = Math.min(spec.output.height, Math.ceil((logo.y + logo.h) * k));
84
74
  if (x1 - x0 >= 4 && y1 - y0 >= 4)
85
- zones.push({ use: 'logo', x: x0, y: y0, w: x1 - x0, h: y1 - y0 });
75
+ timeline.safe_zones = [{ use: 'logo', x: x0, y: y0, w: x1 - x0, h: y1 - y0 }];
86
76
  }
87
- // The style's caption zone, in the video's pixels; it takes the place of any caption zone of a video drawn over.
88
- const captions = spec.captionZone ? (0, timing_1.zoneOnVideo)(spec.captionZone, spec.scale, spec.output) : null;
89
- if (captions)
90
- zones.push({ use: 'captions', ...captions });
91
- const carried = (timeline.safe_zones ?? []).filter((zone) => !spec.captionZone || zone.use !== 'captions');
92
- const all = [...zones, ...carried].slice(0, 8);
93
- if (all.length)
94
- timeline.safe_zones = all;
95
- else
96
- delete timeline.safe_zones;
97
77
  return timeline;
98
78
  }
99
79
  async function withTimeout(work, ms, onTimeout) {
@@ -138,29 +118,8 @@ function pageError(error) {
138
118
  return null;
139
119
  return { code: shape.code, detail: String(shape.detail ?? shape.message ?? '') };
140
120
  }
141
- /** The video, refusing a step that skip_blank would leave empty. */
142
121
  async function makeVideo(rawInputs, ctx, options = {}) {
143
- const made = await makeOrSkip(rawInputs, ctx, options);
144
- if (!made)
145
- throw ctx.error('bad_input', 'no scene has on-screen text or a line, and skip_blank makes nothing for that');
146
- return made;
147
- }
148
- /**
149
- * What the part runs: the video, or null when skip_blank is on and no scene
150
- * has on-screen text or a line (the step then gives no outputs, and the kit
151
- * leaves out every reference to them).
152
- */
153
- async function makeOrSkip(rawInputs, ctx, options = {}) {
154
- // A video to draw over is measured first: its length is the video's length.
155
- const underRef = rawInputs && typeof rawInputs === 'object' ? rawInputs.under : undefined;
156
- let underInfo;
157
- if ((0, inputs_1.isFileRef)(underRef) && underRef.media === 'video')
158
- underInfo = await (0, under_1.probeUnder)(ctx.tools, underRef.path);
159
- const spec = (0, inputs_1.readInputs)(rawInputs, ctx, { under: underInfo });
160
- if (spec.skip) {
161
- ctx.log.info('no scene has text; skip_blank makes nothing', { scenes: spec.scenes.length });
162
- return null;
163
- }
122
+ const spec = (0, inputs_1.readInputs)(rawInputs, ctx);
164
123
  if (!ctx.browser)
165
124
  throw ctx.error('needs_missing', 'the kit browser');
166
125
  const stopIfAsked = () => {
@@ -200,7 +159,6 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
200
159
  const total = spec.frameCount;
201
160
  const frameHashes = [];
202
161
  let logo = null;
203
- let cues = [];
204
162
  const segments = [];
205
163
  const name = 'video.mp4';
206
164
  const out = path.join(ctx.workDir, name);
@@ -210,21 +168,13 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
210
168
  await (0, promises_1.rm)(dir, { recursive: true, force: true });
211
169
  await (0, promises_1.mkdir)(dir, { recursive: true });
212
170
  }
213
- if (spec.under) {
214
- const times = spec.scenes.map((scene) => ({ start_s: spec.sceneFrames[scene.index] / spec.fps, end_s: spec.sceneFrames[scene.index + 1] / spec.fps }));
215
- spec.under.quietBands = await (0, under_1.quietBands)(ctx.tools, spec.under.file.path, spec.under.info, times, framesDir, spec.output);
216
- }
217
171
  const built = await (0, page_1.buildPage)(spec, pageDir, ctx, reserve);
218
172
  const refusePage = (problems) => {
219
173
  throw ctx.error('bad_input', problems.slice(0, 3).join(' '));
220
174
  };
221
175
  const encodeSegment = async (start, count, frameBytes) => {
222
- // Over a video, the page's frames keep their alpha until the last pass lays them over it.
223
- const segment = path.join(segmentsDir, `seg-${String(segments.length + 1).padStart(5, '0')}.${spec.under ? 'mov' : 'mp4'}`);
224
- const args = spec.under
225
- ? (0, under_1.alphaSegmentArgs)({ framesDir, framePattern: encode_1.FRAME_PATTERN, start, count, fps: spec.fps, out: segment })
226
- : (0, encode_1.segmentArgs)({ tools: ctx.tools, framesDir, start, count, fps: spec.fps, out: segment });
227
- await encodeInto(args, segment);
176
+ const segment = path.join(segmentsDir, `seg-${String(segments.length + 1).padStart(5, '0')}.mp4`);
177
+ await encodeInto((0, encode_1.segmentArgs)({ tools: ctx.tools, framesDir, start, count, fps: spec.fps, out: segment }), segment);
228
178
  segments.push(segment);
229
179
  for (let i = start; i < start + count; i++)
230
180
  await (0, promises_1.rm)(path.join(framesDir, (0, encode_1.frameName)(i)), { force: true });
@@ -251,7 +201,6 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
251
201
  if (started === null)
252
202
  throw ctx.error('tool_failed', 'the frame page lost the kit runtime');
253
203
  checked(started);
254
- cues = (0, cues_1.cuesOf)(started);
255
204
  let segmentStart = 0;
256
205
  let segmentBytes = 0;
257
206
  for (let index = 0; index < total; index++) {
@@ -263,7 +212,7 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
263
212
  const file = path.join(framesDir, (0, encode_1.frameName)(index));
264
213
  // Room for the largest PNG this size can be, then only what it took.
265
214
  reserve(frameBound);
266
- await page.screenshot({ path: file, type: 'png', omitBackground: !!spec.under });
215
+ await page.screenshot({ path: file, type: 'png' });
267
216
  const png = await (0, promises_1.readFile)(file);
268
217
  release(frameBound - Math.min(frameBound, png.length));
269
218
  if (png.length > frameBound)
@@ -306,62 +255,9 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
306
255
  reserve(Buffer.byteLength(listText));
307
256
  await (0, promises_1.writeFile)(list, listText);
308
257
  await (0, promises_1.mkdir)(ctx.workDir, { recursive: true });
309
- const seconds = total / spec.fps;
310
- // With sound cues the picture is made first, then the cue mix is added to it as AAC in one more pass.
311
- const picture = cues.length ? path.join(segmentsDir, 'picture.mp4') : out;
312
- const underSound = !!spec.under?.info.hasAudio;
313
- if (spec.under) {
314
- const args = (0, under_1.compositeArgs)({
315
- tools: ctx.tools,
316
- under: spec.under.file.path,
317
- list,
318
- size: spec.output,
319
- fps: spec.fps,
320
- frames: total,
321
- // With cues, the video's sound is the bed of the cue mix instead.
322
- hasAudio: underSound && !cues.length,
323
- out: picture,
324
- });
325
- await encodeInto(args, picture);
326
- }
327
- else
328
- await encodeInto((0, encode_1.concatArgs)(list, picture), picture);
329
- if (cues.length) {
330
- stopIfAsked();
331
- const partDir = ctx.part?.dir;
332
- if (!partDir)
333
- throw ctx.error('tool_failed', "the part's sound bank is missing");
334
- const bank = new Map();
335
- for (const sound of new Set(cues.map((cue) => cue.sound))) {
336
- let pcm;
337
- try {
338
- pcm = (0, cues_1.readWav)(await (0, promises_1.readFile)(path.join(partDir, 'assets', 'sfx', `${sound}.wav`)));
339
- }
340
- catch {
341
- pcm = null;
342
- }
343
- if (!pcm || pcm.rate !== 48_000)
344
- throw ctx.error('tool_failed', `the part's sound "${sound}" could not be read`);
345
- bank.set(sound, (0, cues_1.bankSound)(pcm));
346
- }
347
- let bed = null;
348
- if (spec.under && underSound) {
349
- const bedFile = path.join(segmentsDir, 'bed.wav');
350
- await encodeInto((0, cues_1.bedArgs)({ under: spec.under.file.path, seconds, out: bedFile }), bedFile);
351
- const pcm = (0, cues_1.readWav)(await (0, promises_1.readFile)(bedFile));
352
- if (!pcm)
353
- throw ctx.error('tool_failed', 'the sound of the video drawn over could not be read');
354
- bed = pcm.channels;
355
- }
356
- const mix = (0, cues_1.mixCues)({ cues, bank, fps: spec.fps, frames: total, bed });
357
- const mixFile = path.join(segmentsDir, 'cues.wav');
358
- const bytes = (0, cues_1.wavBytes)(mix.channels);
359
- reserve(bytes.length);
360
- await (0, promises_1.writeFile)(mixFile, bytes);
361
- await encodeInto((0, cues_1.muxArgs)({ tools: ctx.tools, picture, audio: mixFile, seconds, out }), out);
362
- ctx.log.info('sound cues mixed', { cues: mix.placed.length, gain: mix.gain, sounds: cues_1.CUE_SOUNDS.filter((s) => bank.has(s)) });
363
- }
258
+ await encodeInto((0, encode_1.concatArgs)(list, out), out);
364
259
  // The output check: the size the aspect asks for, the length the frames make, H.264 in yuv420p.
260
+ const seconds = total / spec.fps;
365
261
  const info = await ctx.tools.probe(out);
366
262
  const streams = await ctx.tools.exec('ffprobe', ['-v', 'error', '-select_streams', 'v:0', '-show_entries', 'stream=pix_fmt,nb_frames', '-of', 'json', out]);
367
263
  const stream = JSON.parse(streams.stdout).streams?.[0];
@@ -376,8 +272,6 @@ async function makeOrSkip(rawInputs, ctx, options = {}) {
376
272
  wrong.push(`pixels ${stream?.pix_fmt ?? 'unknown'}`);
377
273
  if (stream?.nb_frames !== undefined && Number(stream.nb_frames) !== total)
378
274
  wrong.push(`${stream.nb_frames} frames`);
379
- if (cues.length && !info.has_audio)
380
- wrong.push('no sound for its cues');
381
275
  if (wrong.length)
382
276
  throw ctx.error('output_invalid', `the encoded video is wrong: ${wrong.join(', ')}`);
383
277
  const video = await ctx.file(name, 'video');