@cliangdev/conductor 0.22.0 → 0.24.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 (43) hide show
  1. package/assets/claude/skills/conductor-creative/SKILL.md +57 -0
  2. package/assets/cli-manifest.json +6 -1
  3. package/dist/commands/creative.d.ts.map +1 -1
  4. package/dist/commands/creative.js +6 -1
  5. package/dist/commands/creative.js.map +1 -1
  6. package/dist/creative/assertions.js +4 -4
  7. package/dist/creative/frame.css +21 -0
  8. package/dist/creative/frame.js +39 -0
  9. package/dist/creative/job/render.mjs +261 -4
  10. package/dist/creative/job/transport.mjs +47 -13
  11. package/dist/creative/layouts/bleed/layout.css +6 -2
  12. package/dist/creative/layouts/card/layout.css +3 -0
  13. package/dist/creative/layouts/split/layout.css +3 -0
  14. package/dist/creative/layouts/stacked/layout.css +3 -0
  15. package/dist/creative/motion.js +347 -0
  16. package/dist/creative/placements.js +28 -0
  17. package/dist/creative/placements.json +36 -0
  18. package/dist/creative/render.js +29 -0
  19. package/dist/creative/sheet.html +4 -0
  20. package/dist/creative/sheet.js +39 -2
  21. package/dist/creative/styles.css +36 -2
  22. package/dist/lib/creative-render.d.ts +13 -3
  23. package/dist/lib/creative-render.d.ts.map +1 -1
  24. package/dist/lib/creative-render.js +47 -5
  25. package/dist/lib/creative-render.js.map +1 -1
  26. package/dist/lib/media-probe.d.ts +55 -0
  27. package/dist/lib/media-probe.d.ts.map +1 -0
  28. package/dist/lib/media-probe.js +221 -0
  29. package/dist/lib/media-probe.js.map +1 -0
  30. package/dist/lib/poster-sheet.d.ts +10 -0
  31. package/dist/lib/poster-sheet.d.ts.map +1 -0
  32. package/dist/lib/poster-sheet.js +57 -0
  33. package/dist/lib/poster-sheet.js.map +1 -0
  34. package/dist/mcp/index.d.ts +10587 -0
  35. package/dist/mcp/index.d.ts.map +1 -1
  36. package/dist/mcp/index.js +93 -10
  37. package/dist/mcp/index.js.map +1 -1
  38. package/dist/mcp/tools/creatives.d.ts +29 -2
  39. package/dist/mcp/tools/creatives.d.ts.map +1 -1
  40. package/dist/mcp/tools/creatives.js +282 -35
  41. package/dist/mcp/tools/creatives.js.map +1 -1
  42. package/package.json +3 -1
  43. package/scripts/build-creative.mjs +7 -2
@@ -1,7 +1,10 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { basename } from 'node:path';
1
+ import { readFile, mkdtemp, writeFile, rm } from 'node:fs/promises';
2
+ import { basename, extname, join } from 'node:path';
3
+ import { tmpdir } from 'node:os';
3
4
  import { apiGet, apiPost, apiPatch, putBytes, ApiError } from '../api.js';
4
5
  import { readImageDimensions } from '../../lib/image-dimensions.js';
6
+ import { probeMedia, extractPoster } from '../../lib/media-probe.js';
7
+ import { composePosterSheet } from '../../lib/poster-sheet.js';
5
8
  import { renderCreative as runLocalRender } from '../../lib/creative-render.js';
6
9
  /**
7
10
  * Conductor Creatives: a Brand Kit (tokens, copy rules, approved lines) governs one or more
@@ -148,10 +151,11 @@ export async function updateCreative(params, config) {
148
151
  const { creativeId, ...patch } = params;
149
152
  return withCreativeErrors(() => apiPatch(`${creativesBase(config)}/${creativeId}`, patch, config));
150
153
  }
151
- // --- Photos -----------------------------------------------------------------
152
- async function readPhotoSource(params) {
154
+ // --- Media (photo library: photos, video, audio) -----------------------------
155
+ const VIDEO_LENGTH_WARNING_SECONDS = 180;
156
+ async function readMediaSource(params) {
153
157
  if (params.filePath) {
154
- return { bytes: new Uint8Array(await readFile(params.filePath)), filename: basename(params.filePath) };
158
+ return { bytes: new Uint8Array(await readFile(params.filePath)), filename: basename(params.filePath), filePath: params.filePath };
155
159
  }
156
160
  const raw = params.url;
157
161
  let parsed;
@@ -169,41 +173,146 @@ async function readPhotoSource(params) {
169
173
  throw new Error(`Fetching ${raw} failed: HTTP ${response.status}`);
170
174
  }
171
175
  const bytes = new Uint8Array(await response.arrayBuffer());
172
- return { bytes, filename: basename(parsed.pathname) || 'photo' };
176
+ return { bytes, filename: basename(parsed.pathname) || 'media' };
173
177
  }
174
- export async function uploadCreativePhoto(params, config) {
178
+ function stripExtension(filename) {
179
+ const ext = extname(filename);
180
+ return ext ? filename.slice(0, -ext.length) : filename;
181
+ }
182
+ /** The fields worth an agent's context for one uploaded media item — trims whatever else the
183
+ * backend's photo library response carries (checked/blocked review metadata, timestamps, etc.). */
184
+ const MEDIA_RESULT_FIELDS = [
185
+ 'id', 'label', 'mediaKind', 'contentType', 'width', 'height', 'durationSeconds', 'hasAudio',
186
+ 'posterUrl', 'url', 'sizeBytes', 'source', 'licence', 'aiGenerated', 'uploadStatus', 'checked', 'blocked',
187
+ ];
188
+ function trimMedia(media) {
189
+ const out = {};
190
+ for (const key of MEDIA_RESULT_FIELDS) {
191
+ if (key in media)
192
+ out[key] = media[key];
193
+ }
194
+ return out;
195
+ }
196
+ async function uploadPoster(mediaId, localVideoPath, config, warnings) {
197
+ const posterPath = join(tmpdir(), `conductor-poster-${mediaId}.jpg`);
198
+ try {
199
+ await extractPoster(localVideoPath, posterPath, 1);
200
+ const posterBytes = await readFile(posterPath);
201
+ const posterMint = await apiPost(`${V2_PROJECT(config)}/marketing/photos/${mediaId}/poster`, {}, config);
202
+ await putBytes(posterMint.uploadUrl, 'image/jpeg', posterBytes);
203
+ await apiPost(`${V2_PROJECT(config)}/marketing/photos/${mediaId}/poster/confirm`, { gcsPath: posterMint.gcsPath }, config);
204
+ }
205
+ catch (err) {
206
+ warnings.push(`Could not extract or upload a poster frame: ${err instanceof Error ? err.message : String(err)}`);
207
+ }
208
+ finally {
209
+ await rm(posterPath, { force: true }).catch(() => { });
210
+ }
211
+ }
212
+ /**
213
+ * Uploads a photo, video or audio file into the project's media library from a local path or a
214
+ * public URL, detecting its kind, dimensions/duration/audio automatically, and — for a video —
215
+ * extracting and uploading a poster frame. Shared by `upload_creative_media` and the deprecated
216
+ * `upload_creative_photo` alias, so the two never drift.
217
+ */
218
+ export async function uploadCreativeMedia(params, config) {
175
219
  if (!params.filePath && !params.url) {
176
220
  throw new Error('Pass filePath (a file on this machine) or url (a public http(s) URL).');
177
221
  }
178
- const { bytes, filename } = await readPhotoSource(params);
179
- const info = readImageDimensions(bytes);
180
- if (!info) {
181
- throw new Error(`Could not read "${filename}" as a PNG, JPEG or WebP — Creative photos accept only those three formats.`);
182
- }
183
- const mint = await apiPost(`${V2_PROJECT(config)}/marketing/photos`, {
184
- label: params.label ?? filename,
185
- contentType: info.contentType,
186
- sizeBytes: bytes.byteLength,
187
- width: info.width,
188
- height: info.height,
189
- source: params.source ?? null,
190
- licence: params.licence ?? null,
191
- aiGenerated: !!params.aiGenerated,
192
- }, config);
193
- if (!mint.uploadUrl) {
194
- throw new Error('The mint response carried no uploadUrl — cannot upload bytes.');
195
- }
196
- await putBytes(mint.uploadUrl, info.contentType, bytes);
197
- return apiPost(`${V2_PROJECT(config)}/marketing/photos/${mint.id}/confirm`, { sizeBytes: bytes.byteLength }, config);
222
+ const source = await readMediaSource(params);
223
+ const label = params.label ?? stripExtension(source.filename);
224
+ const warnings = [];
225
+ const imageInfo = readImageDimensions(source.bytes);
226
+ if (imageInfo) {
227
+ const mint = await apiPost(`${V2_PROJECT(config)}/marketing/photos`, {
228
+ label,
229
+ contentType: imageInfo.contentType,
230
+ sizeBytes: source.bytes.byteLength,
231
+ width: imageInfo.width,
232
+ height: imageInfo.height,
233
+ source: params.source ?? null,
234
+ licence: params.licence ?? null,
235
+ aiGenerated: !!params.aiGenerated,
236
+ }, config);
237
+ if (!mint.uploadUrl) {
238
+ throw new Error('The mint response carried no uploadUrl — cannot upload bytes.');
239
+ }
240
+ await putBytes(mint.uploadUrl, imageInfo.contentType, source.bytes);
241
+ const confirmed = await apiPost(`${V2_PROJECT(config)}/marketing/photos/${mint.id}/confirm`, { sizeBytes: source.bytes.byteLength }, config);
242
+ return { media: trimMedia(confirmed), warnings };
243
+ }
244
+ // Not an image — probe it as video/audio, which needs a real file on disk.
245
+ let probePath = source.filePath;
246
+ let tempDir;
247
+ if (!probePath) {
248
+ tempDir = await mkdtemp(join(tmpdir(), 'conductor-media-'));
249
+ probePath = join(tempDir, source.filename || 'media');
250
+ await writeFile(probePath, source.bytes);
251
+ }
252
+ let probe;
253
+ try {
254
+ probe = await probeMedia(probePath);
255
+ }
256
+ catch (err) {
257
+ if (tempDir)
258
+ await rm(tempDir, { recursive: true, force: true }).catch(() => { });
259
+ throw new Error(`Could not read "${source.filename}" as a photo, video or audio file: ${err instanceof Error ? err.message : String(err)}`);
260
+ }
261
+ if (probe.kind !== 'VIDEO' && probe.kind !== 'AUDIO') {
262
+ if (tempDir)
263
+ await rm(tempDir, { recursive: true, force: true }).catch(() => { });
264
+ throw new Error(`"${source.filename}" is not a recognizable photo, video or audio file.`);
265
+ }
266
+ if (probe.kind === 'VIDEO' && probe.durationSeconds && probe.durationSeconds > VIDEO_LENGTH_WARNING_SECONDS) {
267
+ warnings.push(`This video is ${Math.round(probe.durationSeconds)}s long — longer than most platforms take.`);
268
+ }
269
+ try {
270
+ const mint = await apiPost(`${V2_PROJECT(config)}/marketing/photos`, {
271
+ mediaKind: probe.kind,
272
+ label,
273
+ contentType: probe.contentType,
274
+ sizeBytes: source.bytes.byteLength,
275
+ width: probe.width ?? null,
276
+ height: probe.height ?? null,
277
+ durationSeconds: probe.durationSeconds ?? null,
278
+ hasAudio: probe.kind === 'VIDEO' ? !!probe.hasAudio : undefined,
279
+ source: params.source ?? null,
280
+ licence: params.licence ?? null,
281
+ aiGenerated: !!params.aiGenerated,
282
+ }, config);
283
+ if (!mint.uploadUrl) {
284
+ throw new Error('The mint response carried no uploadUrl — cannot upload bytes.');
285
+ }
286
+ await putBytes(mint.uploadUrl, probe.contentType, source.bytes);
287
+ const confirmed = await apiPost(`${V2_PROJECT(config)}/marketing/photos/${mint.id}/confirm`, { sizeBytes: source.bytes.byteLength }, config);
288
+ let finalMedia = confirmed;
289
+ if (probe.kind === 'VIDEO') {
290
+ await uploadPoster(mint.id, probePath, config, warnings);
291
+ finalMedia = await apiGet(`${V2_PROJECT(config)}/marketing/photos/${mint.id}`, config).catch(() => confirmed);
292
+ }
293
+ return { media: trimMedia(finalMedia), warnings };
294
+ }
295
+ finally {
296
+ if (tempDir)
297
+ await rm(tempDir, { recursive: true, force: true }).catch(() => { });
298
+ }
198
299
  }
300
+ /** Deprecated alias for {@link uploadCreativeMedia}, kept so existing callers naming the old tool
301
+ * still work — same implementation, same behavior, including for photos. */
302
+ export const uploadCreativePhoto = uploadCreativeMedia;
199
303
  export async function renderCreativeTool(params, config) {
200
- const result = await runLocalRender({ creativeId: params.creativeId, previewOnly: !!params.previewOnly, renderer: params.renderer ?? 'mcp', workflowRunId: params.workflowRunId }, config);
304
+ // A MOTION render can run for a while (roughly 20s per placement for an 8s video, streamed one
305
+ // ffmpeg progress line every ~25% per placement) — this tool call is still synchronous, but the
306
+ // collected lines are returned so the caller sees what happened rather than just a final result.
307
+ const progress = [];
308
+ const result = await runLocalRender({ creativeId: params.creativeId, previewOnly: !!params.previewOnly, renderer: params.renderer ?? 'mcp', workflowRunId: params.workflowRunId }, config, (...args) => progress.push(args.map((a) => (typeof a === 'string' ? a : String(a))).join(' ')));
201
309
  return {
202
310
  renderId: result.renderId,
203
311
  state: result.state,
204
312
  ok: result.ok,
205
313
  error: result.error,
206
314
  frames: result.frames,
315
+ ...(progress.length ? { log: progress.join('\n') } : {}),
207
316
  nextStep: result.ok
208
317
  ? 'Call preview_creative to look at the render, or get_creative for the stored frame list.'
209
318
  : 'Fix what `error` names and call render_creative again.',
@@ -224,51 +333,189 @@ function findCurrentSheetFrame(renders, version) {
224
333
  }
225
334
  return undefined;
226
335
  }
336
+ // The latest SUCCEEDED, non-preview render (of the given version, when given) whose frames are
337
+ // videos (MOTION's MP4 placements, not the previewOnly 'sheet' contact sheet).
338
+ function findLatestMotionVideoRender(renders, version) {
339
+ for (const render of renders) {
340
+ if (render.state !== 'SUCCEEDED' || render.previewOnly)
341
+ continue;
342
+ if (version !== undefined && render.creativeVersion !== version)
343
+ continue;
344
+ const frames = render.frames ?? [];
345
+ if (frames.some((f) => f.durationSeconds != null || f.contentType === 'video/mp4'))
346
+ return render;
347
+ }
348
+ return undefined;
349
+ }
350
+ /**
351
+ * The text note shown alongside a MOTION creative's key-moments sheet: its animation duration, and
352
+ * — when a full (non-preview) render of the SAME version already exists — the rendered MP4 URL per
353
+ * placement, so a caller doesn't have to make a second call just to find them.
354
+ */
355
+ function motionPreviewNote(motion, renders, version) {
356
+ const durationSec = motion?.durationSec ?? 8;
357
+ let note = `${durationSec}s animation — this image shows three key moments across the timeline, not the finished video.`;
358
+ const videoRender = findLatestMotionVideoRender(renders, version);
359
+ if (videoRender) {
360
+ const lines = (videoRender.frames ?? [])
361
+ .filter((f) => f.url)
362
+ .map((f) => `${f.placementKey}: ${f.url} (${f.durationSeconds ?? durationSec}s${f.hasAudio ? ', with audio' : ''})`);
363
+ if (lines.length) {
364
+ note += ` The current version already has a rendered video:\n${lines.join('\n')}`;
365
+ }
366
+ }
367
+ return note;
368
+ }
369
+ // The latest SUCCEEDED render (of the creative's current version) that actually has frames — CLIP has
370
+ // no dedicated 'sheet' frame the way a STILL previewOnly render does, so any frame set will do.
371
+ function findLatestRenderWithFrames(renders, version) {
372
+ for (const render of renders) {
373
+ if (render.state !== 'SUCCEEDED')
374
+ continue;
375
+ if (version !== undefined && render.creativeVersion !== version)
376
+ continue;
377
+ if (render.frames && render.frames.length)
378
+ return render;
379
+ }
380
+ return undefined;
381
+ }
382
+ /**
383
+ * CLIP preview: there is no server-rendered contact sheet (previewOnly renders 422 for CLIP), so this
384
+ * downloads each placement frame's poster JPEG and composes them into one small sheet locally with
385
+ * ffmpeg (see poster-sheet.ts), falling back to just the first poster on its own if composition fails
386
+ * — showing one frame beats showing nothing. Frame count is placement count, so it's always at least 1.
387
+ */
388
+ async function previewClip(creativeId, version, renders, config) {
389
+ let render = findLatestRenderWithFrames(renders, version);
390
+ if (!render) {
391
+ // previewOnly renders are refused for CLIP — the only way to get frames is a real render.
392
+ const rendered = await runLocalRender({ creativeId, previewOnly: false, renderer: 'mcp' }, config);
393
+ if (!rendered.ok || !rendered.frames.length) {
394
+ return {
395
+ renderId: rendered.renderId,
396
+ state: rendered.state,
397
+ note: `Rendering failed${rendered.error ? `: ${rendered.error}` : '.'} There is nothing to show.`,
398
+ };
399
+ }
400
+ render = { id: rendered.renderId, state: rendered.state ?? 'SUCCEEDED', frames: rendered.frames };
401
+ }
402
+ const frames = (render.frames ?? []).filter((f) => f.posterUrl);
403
+ if (!frames.length) {
404
+ return { renderId: render.id, state: render.state, note: 'The render produced no poster frame to preview.' };
405
+ }
406
+ const summary = frames
407
+ .map((f) => {
408
+ const size = f.width && f.height ? `${f.width}x${f.height}` : '';
409
+ const duration = f.durationSeconds != null ? `${f.durationSeconds}s` : '';
410
+ return `${f.placementKey}: ${[size, duration].filter(Boolean).join(', ') || 'unknown'}`;
411
+ })
412
+ .join('\n');
413
+ const dir = await mkdtemp(join(tmpdir(), 'conductor-preview-'));
414
+ try {
415
+ const posterPaths = [];
416
+ let firstPoster;
417
+ for (const frame of frames) {
418
+ const response = await fetch(frame.posterUrl);
419
+ if (!response.ok)
420
+ continue;
421
+ const bytes = Buffer.from(await response.arrayBuffer());
422
+ if (!firstPoster)
423
+ firstPoster = bytes;
424
+ const filePath = join(dir, `${frame.placementKey}.jpg`);
425
+ await writeFile(filePath, bytes);
426
+ posterPaths.push(filePath);
427
+ }
428
+ if (!posterPaths.length || !firstPoster) {
429
+ return { renderId: render.id, state: render.state, note: 'Could not download any poster frame to preview.' };
430
+ }
431
+ try {
432
+ const sheet = await composePosterSheet(posterPaths);
433
+ return { renderId: render.id, state: render.state, image: { data: sheet, mimeType: 'image/jpeg' }, note: summary };
434
+ }
435
+ catch {
436
+ return {
437
+ renderId: render.id,
438
+ state: render.state,
439
+ image: { data: firstPoster, mimeType: 'image/jpeg' },
440
+ note: `${summary}\n(Could not compose a combined sheet — showing the first placement's poster only.)`,
441
+ };
442
+ }
443
+ }
444
+ finally {
445
+ await rm(dir, { recursive: true, force: true }).catch(() => { });
446
+ }
447
+ }
448
+ /** Joins a MOTION note onto whatever note a fallback path already produced (a too-large image, a
449
+ * download failure, ...) rather than replacing it — the caller still needs both pieces of context. */
450
+ function withMotionNote(note, motionNote) {
451
+ if (!motionNote)
452
+ return note;
453
+ return note ? `${motionNote}\n\n${note}` : motionNote;
454
+ }
227
455
  export async function previewCreative(params, config) {
228
456
  const [creative, renders] = await Promise.all([
229
457
  apiGet(`${creativesBase(config)}/${params.creativeId}`, config),
230
458
  apiGet(`${creativesBase(config)}/${params.creativeId}/renders`, config),
231
459
  ]);
460
+ if (creative?.kind === 'CLIP') {
461
+ return previewClip(params.creativeId, creative?.version, renders, config);
462
+ }
463
+ // For MOTION this note (duration, and any already-rendered MP4 URLs for the current version) is
464
+ // worth attaching to whichever outcome below actually returns — success or a fallback message.
465
+ const motionNote = creative?.kind === 'MOTION' ? motionPreviewNote(creative.motion, renders, creative.version) : undefined;
232
466
  let found = findCurrentSheetFrame(renders, creative?.version);
233
467
  if (!found) {
468
+ // MOTION's previewOnly render produces the same kind of 'sheet' frame as STILL's — a contact
469
+ // sheet, just of `motionKeyTimes()` moments instead of one composition — so this call needs no
470
+ // MOTION-specific branch.
234
471
  const rendered = await runLocalRender({ creativeId: params.creativeId, previewOnly: true, renderer: 'mcp' }, config);
235
472
  if (!rendered.ok || !rendered.renderId) {
236
473
  return {
237
474
  renderId: rendered.renderId,
238
475
  state: rendered.state,
239
- note: `Rendering a preview failed${rendered.error ? `: ${rendered.error}` : '.'} There is nothing to show.`,
476
+ note: withMotionNote(`Rendering a preview failed${rendered.error ? `: ${rendered.error}` : '.'} There is nothing to show.`, motionNote),
240
477
  };
241
478
  }
242
479
  const sheetFrame = rendered.frames.find((f) => f.placementKey === 'sheet');
243
480
  if (!sheetFrame) {
244
- return { renderId: rendered.renderId, state: rendered.state, note: 'The preview render produced no contact sheet frame.' };
481
+ return { renderId: rendered.renderId, state: rendered.state, note: withMotionNote('The preview render produced no contact sheet frame.', motionNote) };
245
482
  }
246
483
  found = { render: { id: rendered.renderId, state: rendered.state ?? 'SUCCEEDED' }, frame: sheetFrame };
247
484
  }
248
485
  const { render, frame } = found;
249
486
  if (!frame.url) {
250
- return { renderId: render.id, state: render.state, note: 'The contact sheet frame has no download URL yet.' };
487
+ return { renderId: render.id, state: render.state, note: withMotionNote('The contact sheet frame has no download URL yet.', motionNote) };
251
488
  }
252
489
  if ((frame.sizeBytes ?? 0) > MAX_INLINE_IMAGE_BYTES) {
253
490
  return {
254
491
  renderId: render.id,
255
492
  state: render.state,
256
493
  url: frame.url,
257
- note: `The rendered image is ${Math.round((frame.sizeBytes ?? 0) / 1024)} KB, larger than this tool can inline (~1 MB) — open the URL directly instead.`,
494
+ note: withMotionNote(`The rendered image is ${Math.round((frame.sizeBytes ?? 0) / 1024)} KB, larger than this tool can inline (~1 MB) — open the URL directly instead.`, motionNote),
258
495
  };
259
496
  }
260
497
  const response = await fetch(frame.url);
261
498
  if (!response.ok) {
262
- return { renderId: render.id, state: render.state, url: frame.url, note: `Could not download the frame (HTTP ${response.status}) — open the URL directly instead.` };
499
+ return {
500
+ renderId: render.id,
501
+ state: render.state,
502
+ url: frame.url,
503
+ note: withMotionNote(`Could not download the frame (HTTP ${response.status}) — open the URL directly instead.`, motionNote),
504
+ };
263
505
  }
264
506
  const bytes = new Uint8Array(await response.arrayBuffer());
265
507
  if (bytes.byteLength > MAX_INLINE_IMAGE_BYTES) {
266
- return { renderId: render.id, state: render.state, url: frame.url, note: 'The rendered image is larger than this tool can inline — open the URL directly instead.' };
508
+ return {
509
+ renderId: render.id,
510
+ state: render.state,
511
+ url: frame.url,
512
+ note: withMotionNote('The rendered image is larger than this tool can inline — open the URL directly instead.', motionNote),
513
+ };
267
514
  }
268
515
  // The `sheet` contact sheet is a 1x JPEG; the mime type comes off the response rather than being
269
516
  // hardcoded so an older PNG sheet is never mislabelled (see docs/creatives.md).
270
517
  const mimeType = (response.headers.get('content-type') || 'image/jpeg').split(';')[0].trim();
271
- return { renderId: render.id, state: render.state, url: frame.url, image: { data: Buffer.from(bytes), mimeType } };
518
+ return { renderId: render.id, state: render.state, url: frame.url, image: { data: Buffer.from(bytes), mimeType }, note: motionNote };
272
519
  }
273
520
  export async function attachCreativeToPost(params, config) {
274
521
  // `postId` is the primary name (it matches get_post_status's own param); `workItemId` is kept as a
@@ -1 +1 @@
1
- {"version":3,"file":"creatives.js","sourceRoot":"","sources":["../../../src/mcp/tools/creatives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"creatives.js","sourceRoot":"","sources":["../../../src/mcp/tools/creatives.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cliangdev/conductor",
3
- "version": "0.22.0",
3
+ "version": "0.24.0",
4
4
  "description": "Agentic software development platform — AI-driven PRD, implementation, and beyond",
5
5
  "license": "SEE LICENSE IN ../LICENSE",
6
6
  "repository": {
@@ -35,6 +35,8 @@
35
35
  "chalk": "^6.0.0",
36
36
  "chokidar": "^5.0.0",
37
37
  "commander": "^15.0.0",
38
+ "ffmpeg-static": "^5.3.0",
39
+ "ffprobe-static": "^3.1.0",
38
40
  "open": "^11.0.0",
39
41
  "ora": "^9.4.0",
40
42
  "playwright-core": "1.63.0"
@@ -13,8 +13,12 @@
13
13
  * `PACKAGE_ROOT = join(HERE, '..')` expects".
14
14
  *
15
15
  * Deliberately excluded: `mount.js`/`copy-rules.js` (editor-only, not
16
- * imported by frame.js/sheet.js — the render core never reaches for them),
17
- * `test/`, `node_modules/`, `job/package.json` (its `playwright` dependency
16
+ * imported by frame.js/sheet.js/job/render.mjs — the render core never
17
+ * reaches for them; `motion.js`, by contrast, IS imported by all three
18
+ * (frame.js/sheet.js apply a MOTION creative's timeline in-page, and
19
+ * job/render.mjs imports `motionKeyTimes` for a previewOnly sheet spec) so
20
+ * it is included below), `test/`, `node_modules/`, `job/package.json` (its
21
+ * `playwright` dependency
18
22
  * is for running the job directly out of that repo; conductor-tools drives
19
23
  * the same `run()` with its own `playwright-core`-based browser discovery —
20
24
  * see src/lib/creative-browser.ts), and `README.md`.
@@ -36,6 +40,7 @@ export const DEST_ROOT = join(__dirname, '..', 'dist', 'creative')
36
40
  /** Relative paths (from conductor-creative/) this build needs. Order doesn't matter. */
37
41
  export const CREATIVE_RUNTIME_FILES = [
38
42
  'render.js',
43
+ 'motion.js',
39
44
  'assertions.js',
40
45
  'placements.js',
41
46
  'placements.json',