mulmocast 2.6.4 → 2.6.5

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.
@@ -4,6 +4,7 @@ export declare const generateReferenceImage: (inputs: {
4
4
  key: string;
5
5
  index: number;
6
6
  image: MulmoImagePromptMedia;
7
+ referenceImagePath?: string;
7
8
  force?: boolean;
8
9
  }) => Promise<string>;
9
10
  export type MediaRefs = {
@@ -7,12 +7,13 @@ import { agentGenerationError, imageReferenceAction, imageFileTarget, movieFileT
7
7
  // public api
8
8
  // Application may call this function directly to generate reference image.
9
9
  export const generateReferenceImage = async (inputs) => {
10
- const { context, key, index, image, force } = inputs;
10
+ const { context, key, index, image, referenceImagePath, force } = inputs;
11
11
  const imagePath = getReferenceImagePath(context, key, "png");
12
12
  // generate image
13
13
  const imageAgentInfo = MulmoPresentationStyleMethods.getImageAgentInfo(context.presentationStyle);
14
14
  const prompt = `${image.prompt}\n${imageAgentInfo.imageParams.style || ""}`;
15
15
  GraphAILogger.info(`Generating reference image for ${key}: ${prompt}`);
16
+ const referenceImages = referenceImagePath ? [referenceImagePath] : undefined;
16
17
  const image_graph_data = {
17
18
  version: 0.5,
18
19
  nodes: {
@@ -22,6 +23,7 @@ export const generateReferenceImage = async (inputs) => {
22
23
  inputs: {
23
24
  media: "image",
24
25
  prompt,
26
+ referenceImages,
25
27
  cache: {
26
28
  force: [context.force, force ?? false],
27
29
  file: imagePath,
@@ -58,12 +60,14 @@ export const getMediaRefs = async (context) => {
58
60
  }
59
61
  const imageRefs = {};
60
62
  const movieRefs = {};
63
+ // Stage 1: resolve non-referencing entries (image, imagePrompt without referenceImageName, movie)
61
64
  await Promise.all(Object.keys(images)
62
65
  .sort()
63
66
  .map(async (key, index) => {
64
67
  const image = images[key];
65
- if (image.type === "imagePrompt") {
66
- imageRefs[key] = await generateReferenceImage({ context, key, index, image, force: false });
68
+ if (image.type === "imagePrompt" && !image.referenceImageName) {
69
+ const refPath = image.referenceImage ? await MulmoMediaSourceMethods.imageReference(image.referenceImage, context, key) : undefined;
70
+ imageRefs[key] = await generateReferenceImage({ context, key, index, image, referenceImagePath: refPath, force: false });
67
71
  }
68
72
  else if (image.type === "image") {
69
73
  imageRefs[key] = await MulmoMediaSourceMethods.imageReference(image.source, context, key);
@@ -72,10 +76,23 @@ export const getMediaRefs = async (context) => {
72
76
  movieRefs[key] = await resolveMovieReference(image, context, key);
73
77
  }
74
78
  }));
79
+ // Stage 2: resolve imagePrompt with referenceImageName (depends on Stage 1 results)
80
+ await Promise.all(Object.keys(images)
81
+ .sort()
82
+ .map(async (key, index) => {
83
+ const image = images[key];
84
+ if (image.type === "imagePrompt" && image.referenceImageName) {
85
+ const refPath = imageRefs[image.referenceImageName];
86
+ if (!refPath) {
87
+ GraphAILogger.warn(`imagePrompt "${key}": referenceImageName "${image.referenceImageName}" not found in imageRefs — generating without reference`);
88
+ }
89
+ imageRefs[key] = await generateReferenceImage({ context, key, index, image, referenceImagePath: refPath, force: false });
90
+ }
91
+ }));
75
92
  return { imageRefs, movieRefs };
76
93
  };
77
- const resolveMovieReference = async (movie, context, key) => {
78
- return MulmoMediaSourceMethods.imageReference(movie.source, context, key);
94
+ const resolveMovieReference = async (media, context, key) => {
95
+ return MulmoMediaSourceMethods.imageReference(media.source, context, key);
79
96
  };
80
97
  const generateReferenceMovie = async (inputs) => {
81
98
  const { context, key, index, moviePrompt, imagePath } = inputs;
@@ -124,17 +141,19 @@ const generateReferenceMovie = async (inputs) => {
124
141
  const resolveLocalRefs = async (context, images, beatIndex, globalImageRefs) => {
125
142
  const localImageRefs = {};
126
143
  const localMovieRefs = {};
127
- // Stage 1: image, imagePrompt, movie (parallel)
144
+ // Stage 1: image, imagePrompt (without referenceImageName), movie (parallel)
128
145
  await Promise.all(Object.keys(images)
129
146
  .sort()
130
147
  .map(async (key, i) => {
131
148
  const entry = images[key];
132
- if (entry.type === "imagePrompt") {
149
+ if (entry.type === "imagePrompt" && !entry.referenceImageName) {
150
+ const refPath = entry.referenceImage ? await MulmoMediaSourceMethods.imageReference(entry.referenceImage, context, key) : undefined;
133
151
  localImageRefs[key] = await generateReferenceImage({
134
152
  context,
135
153
  key,
136
154
  index: beatIndex * 100 + i,
137
155
  image: entry,
156
+ referenceImagePath: refPath,
138
157
  });
139
158
  }
140
159
  else if (entry.type === "image") {
@@ -144,20 +163,39 @@ const resolveLocalRefs = async (context, images, beatIndex, globalImageRefs) =>
144
163
  localMovieRefs[key] = await resolveMovieReference(entry, context, key);
145
164
  }
146
165
  }));
147
- // Stage 2: moviePrompt (imageName references imageRefs only)
166
+ // Stage 2: imagePrompt with referenceImageName (depends on Stage 1)
167
+ const combinedImageRefsForImagePrompt = { ...globalImageRefs, ...localImageRefs };
168
+ await Promise.all(Object.keys(images)
169
+ .sort()
170
+ .map(async (key, i) => {
171
+ const entry = images[key];
172
+ if (entry.type === "imagePrompt" && entry.referenceImageName) {
173
+ const refPath = combinedImageRefsForImagePrompt[entry.referenceImageName];
174
+ if (!refPath) {
175
+ GraphAILogger.warn(`imagePrompt "${key}": referenceImageName "${entry.referenceImageName}" not found — generating without reference`);
176
+ }
177
+ localImageRefs[key] = await generateReferenceImage({
178
+ context,
179
+ key,
180
+ index: beatIndex * 100 + i,
181
+ image: entry,
182
+ referenceImagePath: refPath,
183
+ });
184
+ }
185
+ }));
186
+ // Stage 3: moviePrompt (imageName references imageRefs only)
148
187
  const combinedImageRefs = { ...globalImageRefs, ...localImageRefs };
149
188
  await Promise.all(Object.keys(images)
150
189
  .sort()
151
190
  .map(async (key, i) => {
152
191
  const entry = images[key];
153
192
  if (entry.type === "moviePrompt") {
154
- const mp = entry;
155
- const refImagePath = mp.imageName ? combinedImageRefs[mp.imageName] : undefined;
193
+ const refImagePath = entry.imageName ? combinedImageRefs[entry.imageName] : undefined;
156
194
  localMovieRefs[key] = await generateReferenceMovie({
157
195
  context,
158
196
  key,
159
197
  index: beatIndex * 100 + i,
160
- moviePrompt: mp,
198
+ moviePrompt: entry,
161
199
  imagePath: refImagePath,
162
200
  });
163
201
  }
@@ -3075,6 +3075,17 @@ export declare const mulmoImagePromptMediaSchema: z.ZodObject<{
3075
3075
  width: z.ZodNumber;
3076
3076
  height: z.ZodNumber;
3077
3077
  }, z.core.$strict>>;
3078
+ referenceImageName: z.ZodOptional<z.ZodString>;
3079
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
3080
+ kind: z.ZodLiteral<"url">;
3081
+ url: z.ZodURL;
3082
+ }, z.core.$strict>, z.ZodObject<{
3083
+ kind: z.ZodLiteral<"base64">;
3084
+ data: z.ZodString;
3085
+ }, z.core.$strict>, z.ZodObject<{
3086
+ kind: z.ZodLiteral<"path">;
3087
+ path: z.ZodString;
3088
+ }, z.core.$strict>], "kind">>;
3078
3089
  }, z.core.$strict>;
3079
3090
  export declare const mulmoImageParamsImagesValueSchema: z.ZodUnion<readonly [z.ZodObject<{
3080
3091
  type: z.ZodLiteral<"image">;
@@ -3095,6 +3106,17 @@ export declare const mulmoImageParamsImagesValueSchema: z.ZodUnion<readonly [z.Z
3095
3106
  width: z.ZodNumber;
3096
3107
  height: z.ZodNumber;
3097
3108
  }, z.core.$strict>>;
3109
+ referenceImageName: z.ZodOptional<z.ZodString>;
3110
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
3111
+ kind: z.ZodLiteral<"url">;
3112
+ url: z.ZodURL;
3113
+ }, z.core.$strict>, z.ZodObject<{
3114
+ kind: z.ZodLiteral<"base64">;
3115
+ data: z.ZodString;
3116
+ }, z.core.$strict>, z.ZodObject<{
3117
+ kind: z.ZodLiteral<"path">;
3118
+ path: z.ZodString;
3119
+ }, z.core.$strict>], "kind">>;
3098
3120
  }, z.core.$strict>, z.ZodObject<{
3099
3121
  type: z.ZodLiteral<"movie">;
3100
3122
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -3131,6 +3153,17 @@ export declare const mulmoImageParamsImagesSchema: z.ZodRecord<z.ZodString, z.Zo
3131
3153
  width: z.ZodNumber;
3132
3154
  height: z.ZodNumber;
3133
3155
  }, z.core.$strict>>;
3156
+ referenceImageName: z.ZodOptional<z.ZodString>;
3157
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
3158
+ kind: z.ZodLiteral<"url">;
3159
+ url: z.ZodURL;
3160
+ }, z.core.$strict>, z.ZodObject<{
3161
+ kind: z.ZodLiteral<"base64">;
3162
+ data: z.ZodString;
3163
+ }, z.core.$strict>, z.ZodObject<{
3164
+ kind: z.ZodLiteral<"path">;
3165
+ path: z.ZodString;
3166
+ }, z.core.$strict>], "kind">>;
3134
3167
  }, z.core.$strict>, z.ZodObject<{
3135
3168
  type: z.ZodLiteral<"movie">;
3136
3169
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -3219,6 +3252,17 @@ export declare const mulmoImageParamsSchema: z.ZodObject<{
3219
3252
  width: z.ZodNumber;
3220
3253
  height: z.ZodNumber;
3221
3254
  }, z.core.$strict>>;
3255
+ referenceImageName: z.ZodOptional<z.ZodString>;
3256
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
3257
+ kind: z.ZodLiteral<"url">;
3258
+ url: z.ZodURL;
3259
+ }, z.core.$strict>, z.ZodObject<{
3260
+ kind: z.ZodLiteral<"base64">;
3261
+ data: z.ZodString;
3262
+ }, z.core.$strict>, z.ZodObject<{
3263
+ kind: z.ZodLiteral<"path">;
3264
+ path: z.ZodString;
3265
+ }, z.core.$strict>], "kind">>;
3222
3266
  }, z.core.$strict>, z.ZodObject<{
3223
3267
  type: z.ZodLiteral<"movie">;
3224
3268
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -6591,6 +6635,17 @@ export declare const mulmoBeatSchema: z.ZodObject<{
6591
6635
  width: z.ZodNumber;
6592
6636
  height: z.ZodNumber;
6593
6637
  }, z.core.$strict>>;
6638
+ referenceImageName: z.ZodOptional<z.ZodString>;
6639
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
6640
+ kind: z.ZodLiteral<"url">;
6641
+ url: z.ZodURL;
6642
+ }, z.core.$strict>, z.ZodObject<{
6643
+ kind: z.ZodLiteral<"base64">;
6644
+ data: z.ZodString;
6645
+ }, z.core.$strict>, z.ZodObject<{
6646
+ kind: z.ZodLiteral<"path">;
6647
+ path: z.ZodString;
6648
+ }, z.core.$strict>], "kind">>;
6594
6649
  }, z.core.$strict>, z.ZodObject<{
6595
6650
  type: z.ZodLiteral<"movie">;
6596
6651
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -6722,6 +6777,17 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
6722
6777
  width: z.ZodNumber;
6723
6778
  height: z.ZodNumber;
6724
6779
  }, z.core.$strict>>;
6780
+ referenceImageName: z.ZodOptional<z.ZodString>;
6781
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
6782
+ kind: z.ZodLiteral<"url">;
6783
+ url: z.ZodURL;
6784
+ }, z.core.$strict>, z.ZodObject<{
6785
+ kind: z.ZodLiteral<"base64">;
6786
+ data: z.ZodString;
6787
+ }, z.core.$strict>, z.ZodObject<{
6788
+ kind: z.ZodLiteral<"path">;
6789
+ path: z.ZodString;
6790
+ }, z.core.$strict>], "kind">>;
6725
6791
  }, z.core.$strict>, z.ZodObject<{
6726
6792
  type: z.ZodLiteral<"movie">;
6727
6793
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -7207,6 +7273,17 @@ export declare const mulmoScriptSchema: z.ZodObject<{
7207
7273
  width: z.ZodNumber;
7208
7274
  height: z.ZodNumber;
7209
7275
  }, z.core.$strict>>;
7276
+ referenceImageName: z.ZodOptional<z.ZodString>;
7277
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
7278
+ kind: z.ZodLiteral<"url">;
7279
+ url: z.ZodURL;
7280
+ }, z.core.$strict>, z.ZodObject<{
7281
+ kind: z.ZodLiteral<"base64">;
7282
+ data: z.ZodString;
7283
+ }, z.core.$strict>, z.ZodObject<{
7284
+ kind: z.ZodLiteral<"path">;
7285
+ path: z.ZodString;
7286
+ }, z.core.$strict>], "kind">>;
7210
7287
  }, z.core.$strict>, z.ZodObject<{
7211
7288
  type: z.ZodLiteral<"movie">;
7212
7289
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -10567,6 +10644,17 @@ export declare const mulmoScriptSchema: z.ZodObject<{
10567
10644
  width: z.ZodNumber;
10568
10645
  height: z.ZodNumber;
10569
10646
  }, z.core.$strict>>;
10647
+ referenceImageName: z.ZodOptional<z.ZodString>;
10648
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
10649
+ kind: z.ZodLiteral<"url">;
10650
+ url: z.ZodURL;
10651
+ }, z.core.$strict>, z.ZodObject<{
10652
+ kind: z.ZodLiteral<"base64">;
10653
+ data: z.ZodString;
10654
+ }, z.core.$strict>, z.ZodObject<{
10655
+ kind: z.ZodLiteral<"path">;
10656
+ path: z.ZodString;
10657
+ }, z.core.$strict>], "kind">>;
10570
10658
  }, z.core.$strict>, z.ZodObject<{
10571
10659
  type: z.ZodLiteral<"movie">;
10572
10660
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -10773,6 +10861,17 @@ export declare const mulmoStudioSchema: z.ZodObject<{
10773
10861
  width: z.ZodNumber;
10774
10862
  height: z.ZodNumber;
10775
10863
  }, z.core.$strict>>;
10864
+ referenceImageName: z.ZodOptional<z.ZodString>;
10865
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
10866
+ kind: z.ZodLiteral<"url">;
10867
+ url: z.ZodURL;
10868
+ }, z.core.$strict>, z.ZodObject<{
10869
+ kind: z.ZodLiteral<"base64">;
10870
+ data: z.ZodString;
10871
+ }, z.core.$strict>, z.ZodObject<{
10872
+ kind: z.ZodLiteral<"path">;
10873
+ path: z.ZodString;
10874
+ }, z.core.$strict>], "kind">>;
10776
10875
  }, z.core.$strict>, z.ZodObject<{
10777
10876
  type: z.ZodLiteral<"movie">;
10778
10877
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -14133,6 +14232,17 @@ export declare const mulmoStudioSchema: z.ZodObject<{
14133
14232
  width: z.ZodNumber;
14134
14233
  height: z.ZodNumber;
14135
14234
  }, z.core.$strict>>;
14235
+ referenceImageName: z.ZodOptional<z.ZodString>;
14236
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
14237
+ kind: z.ZodLiteral<"url">;
14238
+ url: z.ZodURL;
14239
+ }, z.core.$strict>, z.ZodObject<{
14240
+ kind: z.ZodLiteral<"base64">;
14241
+ data: z.ZodString;
14242
+ }, z.core.$strict>, z.ZodObject<{
14243
+ kind: z.ZodLiteral<"path">;
14244
+ path: z.ZodString;
14245
+ }, z.core.$strict>], "kind">>;
14136
14246
  }, z.core.$strict>, z.ZodObject<{
14137
14247
  type: z.ZodLiteral<"movie">;
14138
14248
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -14275,6 +14385,17 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
14275
14385
  width: z.ZodNumber;
14276
14386
  height: z.ZodNumber;
14277
14387
  }, z.core.$strict>>;
14388
+ referenceImageName: z.ZodOptional<z.ZodString>;
14389
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
14390
+ kind: z.ZodLiteral<"url">;
14391
+ url: z.ZodURL;
14392
+ }, z.core.$strict>, z.ZodObject<{
14393
+ kind: z.ZodLiteral<"base64">;
14394
+ data: z.ZodString;
14395
+ }, z.core.$strict>, z.ZodObject<{
14396
+ kind: z.ZodLiteral<"path">;
14397
+ path: z.ZodString;
14398
+ }, z.core.$strict>], "kind">>;
14278
14399
  }, z.core.$strict>, z.ZodObject<{
14279
14400
  type: z.ZodLiteral<"movie">;
14280
14401
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -14754,6 +14875,17 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
14754
14875
  width: z.ZodNumber;
14755
14876
  height: z.ZodNumber;
14756
14877
  }, z.core.$strict>>;
14878
+ referenceImageName: z.ZodOptional<z.ZodString>;
14879
+ referenceImage: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
14880
+ kind: z.ZodLiteral<"url">;
14881
+ url: z.ZodURL;
14882
+ }, z.core.$strict>, z.ZodObject<{
14883
+ kind: z.ZodLiteral<"base64">;
14884
+ data: z.ZodString;
14885
+ }, z.core.$strict>, z.ZodObject<{
14886
+ kind: z.ZodLiteral<"path">;
14887
+ path: z.ZodString;
14888
+ }, z.core.$strict>], "kind">>;
14757
14889
  }, z.core.$strict>, z.ZodObject<{
14758
14890
  type: z.ZodLiteral<"movie">;
14759
14891
  source: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -344,6 +344,8 @@ export const mulmoImagePromptMediaSchema = z
344
344
  type: z.literal("imagePrompt"),
345
345
  prompt: z.string().min(1),
346
346
  canvasSize: z.object({ width: z.number(), height: z.number() }).strict().optional(),
347
+ referenceImageName: imageIdSchema.optional().describe("Reference another imageRefs key as input for image generation"),
348
+ referenceImage: mediaSourceSchema.optional().describe("Direct source (path/url/base64) as reference image for generation"),
347
349
  })
348
350
  .strict();
349
351
  export const mulmoImageParamsImagesValueSchema = z.union([
@@ -89,6 +89,17 @@ export declare const createStudioData: (_mulmoScript: MulmoScript, fileName: str
89
89
  width: number;
90
90
  height: number;
91
91
  } | undefined;
92
+ referenceImageName?: string | undefined;
93
+ referenceImage?: {
94
+ kind: "url";
95
+ url: string;
96
+ } | {
97
+ kind: "base64";
98
+ data: string;
99
+ } | {
100
+ kind: "path";
101
+ path: string;
102
+ } | undefined;
92
103
  }> | undefined;
93
104
  backgroundImage?: string | {
94
105
  source: {
@@ -2072,6 +2083,17 @@ export declare const createStudioData: (_mulmoScript: MulmoScript, fileName: str
2072
2083
  width: number;
2073
2084
  height: number;
2074
2085
  } | undefined;
2086
+ referenceImageName?: string | undefined;
2087
+ referenceImage?: {
2088
+ kind: "url";
2089
+ url: string;
2090
+ } | {
2091
+ kind: "base64";
2092
+ data: string;
2093
+ } | {
2094
+ kind: "path";
2095
+ path: string;
2096
+ } | undefined;
2075
2097
  }> | undefined;
2076
2098
  imageNames?: string[] | undefined;
2077
2099
  imagePrompt?: string | undefined;
@@ -2294,6 +2316,17 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
2294
2316
  width: number;
2295
2317
  height: number;
2296
2318
  } | undefined;
2319
+ referenceImageName?: string | undefined;
2320
+ referenceImage?: {
2321
+ kind: "url";
2322
+ url: string;
2323
+ } | {
2324
+ kind: "base64";
2325
+ data: string;
2326
+ } | {
2327
+ kind: "path";
2328
+ path: string;
2329
+ } | undefined;
2297
2330
  }> | undefined;
2298
2331
  backgroundImage?: string | {
2299
2332
  source: {
@@ -4277,6 +4310,17 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
4277
4310
  width: number;
4278
4311
  height: number;
4279
4312
  } | undefined;
4313
+ referenceImageName?: string | undefined;
4314
+ referenceImage?: {
4315
+ kind: "url";
4316
+ url: string;
4317
+ } | {
4318
+ kind: "base64";
4319
+ data: string;
4320
+ } | {
4321
+ kind: "path";
4322
+ path: string;
4323
+ } | undefined;
4280
4324
  }> | undefined;
4281
4325
  imageNames?: string[] | undefined;
4282
4326
  imagePrompt?: string | undefined;
@@ -4506,6 +4550,17 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
4506
4550
  width: number;
4507
4551
  height: number;
4508
4552
  } | undefined;
4553
+ referenceImageName?: string | undefined;
4554
+ referenceImage?: {
4555
+ kind: "url";
4556
+ url: string;
4557
+ } | {
4558
+ kind: "base64";
4559
+ data: string;
4560
+ } | {
4561
+ kind: "path";
4562
+ path: string;
4563
+ } | undefined;
4509
4564
  }> | undefined;
4510
4565
  backgroundImage?: string | {
4511
4566
  source: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "2.6.4",
3
+ "version": "2.6.5",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.node.js",
@@ -88,7 +88,7 @@
88
88
  "homepage": "https://github.com/receptron/mulmocast-cli#readme",
89
89
  "dependencies": {
90
90
  "@google-cloud/text-to-speech": "^6.4.0",
91
- "@google/genai": "^1.45.0",
91
+ "@google/genai": "^1.46.0",
92
92
  "@graphai/anthropic_agent": "^2.0.12",
93
93
  "@graphai/browserless_agent": "^2.0.2",
94
94
  "@graphai/gemini_agent": "^2.0.5",
@@ -108,11 +108,11 @@
108
108
  "dotenv": "^17.3.1",
109
109
  "fluent-ffmpeg": "^2.1.3",
110
110
  "graphai": "^2.0.16",
111
- "jsdom": "^29.0.0",
112
- "marked": "^17.0.4",
111
+ "jsdom": "^29.0.1",
112
+ "marked": "^17.0.5",
113
113
  "mulmocast-vision": "^1.0.9",
114
114
  "ora": "^9.3.0",
115
- "puppeteer": "^24.39.1",
115
+ "puppeteer": "^24.40.0",
116
116
  "replicate": "^1.4.0",
117
117
  "yaml": "^2.8.2",
118
118
  "yargs": "^18.0.0",
@@ -123,10 +123,10 @@
123
123
  "@receptron/test_utils": "^2.0.3",
124
124
  "@types/archiver": "^7.0.0",
125
125
  "@types/fluent-ffmpeg": "^2.1.28",
126
- "@types/jsdom": "^28.0.0",
126
+ "@types/jsdom": "^28.0.1",
127
127
  "@types/yargs": "^17.0.35",
128
128
  "cross-env": "^10.1.0",
129
- "eslint": "^10.0.3",
129
+ "eslint": "^10.1.0",
130
130
  "eslint-config-prettier": "^10.1.8",
131
131
  "eslint-plugin-prettier": "^5.5.5",
132
132
  "eslint-plugin-sonarjs": "^4.0.2",
@@ -0,0 +1,55 @@
1
+ {
2
+ "$mulmocast": { "version": "1.1" },
3
+ "title": "Image Prompt Reference Tests",
4
+ "lang": "en",
5
+ "canvasSize": { "width": 1280, "height": 720 },
6
+ "imageParams": {
7
+ "images": {
8
+ "base_photo": {
9
+ "type": "image",
10
+ "source": { "kind": "url", "url": "https://images.unsplash.com/photo-1557682250-33bd709cbe85?w=1280&h=720&fit=crop" }
11
+ },
12
+ "from_prompt": {
13
+ "type": "imagePrompt",
14
+ "prompt": "A beautiful mountain landscape at sunset, photorealistic"
15
+ },
16
+ "stylized_by_name": {
17
+ "type": "imagePrompt",
18
+ "prompt": "Transform this image into a watercolor painting style",
19
+ "referenceImageName": "base_photo"
20
+ },
21
+ "stylized_by_source": {
22
+ "type": "imagePrompt",
23
+ "prompt": "Create an anime version of this gradient background",
24
+ "referenceImage": { "kind": "url", "url": "https://images.unsplash.com/photo-1557682250-33bd709cbe85?w=1280&h=720&fit=crop" }
25
+ },
26
+ "chained_ref": {
27
+ "type": "imagePrompt",
28
+ "prompt": "Add snow-capped peaks to this mountain scene",
29
+ "referenceImageName": "from_prompt"
30
+ }
31
+ }
32
+ },
33
+ "beats": [
34
+ {
35
+ "text": "Pattern 1: imagePrompt without reference (baseline)",
36
+ "imagePrompt": "A simple landscape",
37
+ "imageNames": ["from_prompt"]
38
+ },
39
+ {
40
+ "text": "Pattern 2: referenceImageName — reference another imageRefs key",
41
+ "imagePrompt": "A simple landscape",
42
+ "imageNames": ["stylized_by_name"]
43
+ },
44
+ {
45
+ "text": "Pattern 3: referenceImage — direct source",
46
+ "imagePrompt": "A simple landscape",
47
+ "imageNames": ["stylized_by_source"]
48
+ },
49
+ {
50
+ "text": "Pattern 4: chained reference — imagePrompt referencing another imagePrompt",
51
+ "imagePrompt": "A simple landscape",
52
+ "imageNames": ["chained_ref"]
53
+ }
54
+ ]
55
+ }