mulmocast 2.1.22 → 2.1.24
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.
- package/lib/agents/image_genai_agent.js +14 -6
- package/lib/agents/image_openai_agent.js +4 -3
- package/lib/agents/movie_genai_agent.js +35 -19
- package/lib/agents/tts_openai_agent.js +4 -3
- package/lib/methods/mulmo_presentation_style.d.ts +2 -0
- package/lib/types/agent.d.ts +5 -0
- package/lib/types/provider2agent.d.ts +2 -1
- package/lib/types/provider2agent.js +9 -2
- package/lib/types/schema.d.ts +92 -0
- package/lib/types/schema.js +8 -0
- package/lib/utils/context.d.ts +42 -0
- package/lib/utils/openai_client.d.ts +17 -0
- package/lib/utils/openai_client.js +35 -0
- package/lib/utils/utils.js +3 -0
- package/package.json +5 -5
- package/scripts/test/test_audio_azure.json +24 -0
- package/scripts/test/test_images_azure.json +26 -0
- package/scripts/test/test_vertexai.json +21 -0
- package/lib/agents/tts_nijivoice_agent.d.ts +0 -5
- package/lib/agents/tts_nijivoice_agent.js +0 -76
- package/lib/agents/utils.d.ts +0 -1
- package/lib/agents/utils.js +0 -1
- package/lib/utils/const.d.ts +0 -15
- package/lib/utils/const.js +0 -15
- package/lib/utils/provider2agent.d.ts +0 -191
- package/lib/utils/provider2agent.js +0 -326
|
@@ -59,12 +59,20 @@ export const imageGenAIAgent = async ({ namedInputs, params, config, }) => {
|
|
|
59
59
|
const { prompt, referenceImages } = namedInputs;
|
|
60
60
|
const model = params.model ?? provider2ImageAgent["google"].defaultModel;
|
|
61
61
|
const apiKey = config?.apiKey;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
const ai = params.vertexai_project
|
|
63
|
+
? new GoogleGenAI({
|
|
64
|
+
vertexai: true,
|
|
65
|
+
project: params.vertexai_project,
|
|
66
|
+
location: params.vertexai_location ?? "us-central1",
|
|
67
|
+
})
|
|
68
|
+
: (() => {
|
|
69
|
+
if (!apiKey) {
|
|
70
|
+
throw new Error("Google GenAI API key is required (GEMINI_API_KEY)", {
|
|
71
|
+
cause: apiKeyMissingError("imageGenAIAgent", imageAction, "GEMINI_API_KEY"),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return new GoogleGenAI({ apiKey });
|
|
75
|
+
})();
|
|
68
76
|
if (model === "gemini-2.5-flash-image" || model === "gemini-3-pro-image-preview") {
|
|
69
77
|
const contentParams = (() => {
|
|
70
78
|
const contents = getGeminiContents(prompt, referenceImages);
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { GraphAILogger } from "graphai";
|
|
4
|
-
import
|
|
4
|
+
import { toFile, AuthenticationError, RateLimitError, APIError } from "openai";
|
|
5
|
+
import { createOpenAIClient } from "../utils/openai_client.js";
|
|
5
6
|
import { provider2ImageAgent, gptImages } from "../types/provider2agent.js";
|
|
6
7
|
import { apiKeyMissingError, agentGenerationError, openAIAgentGenerationError, agentIncorrectAPIKeyError, agentAPIRateLimitError, agentInvalidResponseError, imageAction, imageFileTarget, } from "../utils/error_cause.js";
|
|
7
8
|
// https://platform.openai.com/docs/guides/image-generation
|
|
8
9
|
export const imageOpenaiAgent = async ({ namedInputs, params, config, }) => {
|
|
9
10
|
const { prompt, referenceImages } = namedInputs;
|
|
10
11
|
const { moderation, canvasSize, quality } = params;
|
|
11
|
-
const { apiKey, baseURL } = { ...config };
|
|
12
|
+
const { apiKey, baseURL, apiVersion } = { ...config };
|
|
12
13
|
if (!apiKey) {
|
|
13
14
|
throw new Error("OpenAI API key is required (OPENAI_API_KEY)", {
|
|
14
15
|
cause: apiKeyMissingError("imageOpenaiAgent", imageAction, "OPENAI_API_KEY"),
|
|
15
16
|
});
|
|
16
17
|
}
|
|
17
18
|
const model = params.model ?? provider2ImageAgent["openai"].defaultModel;
|
|
18
|
-
const openai =
|
|
19
|
+
const openai = createOpenAIClient({ apiKey, baseURL, apiVersion });
|
|
19
20
|
const size = (() => {
|
|
20
21
|
if (gptImages.includes(model)) {
|
|
21
22
|
if (canvasSize.width > canvasSize.height) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFileSync } from "fs";
|
|
1
|
+
import { readFileSync, writeFileSync } from "fs";
|
|
2
2
|
import { GraphAILogger, sleep } from "graphai";
|
|
3
3
|
import { GoogleGenAI, PersonGeneration } from "@google/genai";
|
|
4
4
|
import { apiKeyMissingError, agentGenerationError, agentInvalidResponseError, imageAction, movieFileTarget, videoDurationTarget, hasCause, } from "../utils/error_cause.js";
|
|
@@ -35,12 +35,19 @@ const loadImageAsBase64 = (imagePath) => {
|
|
|
35
35
|
mimeType: "image/png",
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
|
-
const downloadVideo = async (ai, video, movieFile) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
38
|
+
const downloadVideo = async (ai, video, movieFile, isVertexAI) => {
|
|
39
|
+
if (isVertexAI) {
|
|
40
|
+
// Vertex AI returns videoBytes directly
|
|
41
|
+
writeFileSync(movieFile, Buffer.from(video.videoBytes, "base64"));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Gemini API requires download via uri
|
|
45
|
+
await ai.files.download({
|
|
46
|
+
file: video,
|
|
47
|
+
downloadPath: movieFile,
|
|
48
|
+
});
|
|
49
|
+
await sleep(5000); // HACK: Without this, the file is not ready yet.
|
|
50
|
+
}
|
|
44
51
|
return { saved: movieFile };
|
|
45
52
|
};
|
|
46
53
|
const createVeo31Payload = (model, prompt, aspectRatio, source) => ({
|
|
@@ -53,7 +60,7 @@ const createVeo31Payload = (model, prompt, aspectRatio, source) => ({
|
|
|
53
60
|
},
|
|
54
61
|
...source,
|
|
55
62
|
});
|
|
56
|
-
const generateExtendedVideo = async (ai, model, prompt, aspectRatio, imagePath, requestedDuration, movieFile) => {
|
|
63
|
+
const generateExtendedVideo = async (ai, model, prompt, aspectRatio, imagePath, requestedDuration, movieFile, isVertexAI) => {
|
|
57
64
|
const initialDuration = 8;
|
|
58
65
|
const maxExtensionDuration = 8;
|
|
59
66
|
const extensionsNeeded = Math.ceil((requestedDuration - initialDuration) / maxExtensionDuration);
|
|
@@ -85,9 +92,9 @@ const generateExtendedVideo = async (ai, model, prompt, aspectRatio, imagePath,
|
|
|
85
92
|
cause: agentInvalidResponseError("movieGenAIAgent", imageAction, movieFileTarget),
|
|
86
93
|
});
|
|
87
94
|
}
|
|
88
|
-
return downloadVideo(ai, result.video, movieFile);
|
|
95
|
+
return downloadVideo(ai, result.video, movieFile, isVertexAI);
|
|
89
96
|
};
|
|
90
|
-
const generateStandardVideo = async (ai, model, prompt, aspectRatio, imagePath, duration, movieFile) => {
|
|
97
|
+
const generateStandardVideo = async (ai, model, prompt, aspectRatio, imagePath, duration, movieFile, isVertexAI) => {
|
|
91
98
|
const isVeo3 = model === "veo-3.0-generate-001" || model === "veo-3.1-generate-preview";
|
|
92
99
|
const payload = {
|
|
93
100
|
model,
|
|
@@ -102,18 +109,13 @@ const generateStandardVideo = async (ai, model, prompt, aspectRatio, imagePath,
|
|
|
102
109
|
const operation = await ai.models.generateVideos(payload);
|
|
103
110
|
const response = await pollUntilDone(ai, operation);
|
|
104
111
|
const video = getVideoFromResponse(response);
|
|
105
|
-
return downloadVideo(ai, video, movieFile);
|
|
112
|
+
return downloadVideo(ai, video, movieFile, isVertexAI);
|
|
106
113
|
};
|
|
107
114
|
export const movieGenAIAgent = async ({ namedInputs, params, config, }) => {
|
|
108
115
|
const { prompt, imagePath, movieFile } = namedInputs;
|
|
109
116
|
const aspectRatio = getAspectRatio(params.canvasSize, ASPECT_RATIOS);
|
|
110
117
|
const model = params.model ?? provider2MovieAgent.google.defaultModel;
|
|
111
118
|
const apiKey = config?.apiKey;
|
|
112
|
-
if (!apiKey) {
|
|
113
|
-
throw new Error("Google GenAI API key is required (GEMINI_API_KEY)", {
|
|
114
|
-
cause: apiKeyMissingError("movieGenAIAgent", imageAction, "GEMINI_API_KEY"),
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
119
|
try {
|
|
118
120
|
const requestedDuration = params.duration ?? 8;
|
|
119
121
|
const duration = getModelDuration("google", model, requestedDuration);
|
|
@@ -122,13 +124,27 @@ export const movieGenAIAgent = async ({ namedInputs, params, config, }) => {
|
|
|
122
124
|
cause: agentGenerationError("movieGenAIAgent", imageAction, videoDurationTarget),
|
|
123
125
|
});
|
|
124
126
|
}
|
|
125
|
-
const
|
|
127
|
+
const isVertexAI = !!params.vertexai_project;
|
|
128
|
+
const ai = isVertexAI
|
|
129
|
+
? new GoogleGenAI({
|
|
130
|
+
vertexai: true,
|
|
131
|
+
project: params.vertexai_project,
|
|
132
|
+
location: params.vertexai_location ?? "us-central1",
|
|
133
|
+
})
|
|
134
|
+
: (() => {
|
|
135
|
+
if (!apiKey) {
|
|
136
|
+
throw new Error("Google GenAI API key is required (GEMINI_API_KEY)", {
|
|
137
|
+
cause: apiKeyMissingError("movieGenAIAgent", imageAction, "GEMINI_API_KEY"),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
return new GoogleGenAI({ apiKey });
|
|
141
|
+
})();
|
|
126
142
|
// Veo 3.1: Video extension mode for videos longer than 8s
|
|
127
143
|
if (model === "veo-3.1-generate-preview" && requestedDuration > 8 && params.canvasSize) {
|
|
128
|
-
return generateExtendedVideo(ai, model, prompt, aspectRatio, imagePath, requestedDuration, movieFile);
|
|
144
|
+
return generateExtendedVideo(ai, model, prompt, aspectRatio, imagePath, requestedDuration, movieFile, isVertexAI);
|
|
129
145
|
}
|
|
130
146
|
// Standard mode
|
|
131
|
-
return generateStandardVideo(ai, model, prompt, aspectRatio, imagePath, duration, movieFile);
|
|
147
|
+
return generateStandardVideo(ai, model, prompt, aspectRatio, imagePath, duration, movieFile, isVertexAI);
|
|
132
148
|
}
|
|
133
149
|
catch (error) {
|
|
134
150
|
GraphAILogger.info("Failed to generate movie:", error.message);
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { GraphAILogger } from "graphai";
|
|
2
|
-
import
|
|
2
|
+
import { AuthenticationError, RateLimitError } from "openai";
|
|
3
3
|
import { provider2TTSAgent } from "../types/provider2agent.js";
|
|
4
|
+
import { createOpenAIClient } from "../utils/openai_client.js";
|
|
4
5
|
import { apiKeyMissingError, agentIncorrectAPIKeyError, agentAPIRateLimitError, agentGenerationError, audioAction, audioFileTarget, } from "../utils/error_cause.js";
|
|
5
6
|
export const ttsOpenaiAgent = async ({ namedInputs, params, config, }) => {
|
|
6
7
|
const { text } = namedInputs;
|
|
7
8
|
const { model, voice, suppressError, instructions, speed } = params;
|
|
8
|
-
const { apiKey, baseURL } = config ?? {};
|
|
9
|
+
const { apiKey, baseURL, apiVersion } = config ?? {};
|
|
9
10
|
if (!apiKey) {
|
|
10
11
|
throw new Error("OpenAI API key is required (OPENAI_API_KEY)", {
|
|
11
12
|
cause: apiKeyMissingError("ttsOpenaiAgent", audioAction, "OPENAI_API_KEY"),
|
|
12
13
|
});
|
|
13
14
|
}
|
|
14
|
-
const openai =
|
|
15
|
+
const openai = createOpenAIClient({ apiKey, baseURL, apiVersion });
|
|
15
16
|
try {
|
|
16
17
|
const tts_options = {
|
|
17
18
|
model: model ?? provider2TTSAgent.openai.defaultModel,
|
|
@@ -171,6 +171,8 @@ export declare const MulmoPresentationStyleMethods: {
|
|
|
171
171
|
type: "custom";
|
|
172
172
|
filter: string;
|
|
173
173
|
})[] | undefined;
|
|
174
|
+
vertexai_project?: string | undefined;
|
|
175
|
+
vertexai_location?: string | undefined;
|
|
174
176
|
speed?: number | undefined;
|
|
175
177
|
};
|
|
176
178
|
keyName: string;
|
package/lib/types/agent.d.ts
CHANGED
|
@@ -39,6 +39,8 @@ export type ImageAgentParams = {
|
|
|
39
39
|
width: number;
|
|
40
40
|
height: number;
|
|
41
41
|
};
|
|
42
|
+
vertexai_project?: string;
|
|
43
|
+
vertexai_location?: string;
|
|
42
44
|
};
|
|
43
45
|
export type OpenAIImageAgentParams = ImageAgentParams & {
|
|
44
46
|
moderation: OpenAIImageModeration | null | undefined;
|
|
@@ -58,6 +60,7 @@ export type ReplicateImageAgentParams = {
|
|
|
58
60
|
export type OpenAIImageAgentConfig = {
|
|
59
61
|
baseURL?: string;
|
|
60
62
|
apiKey?: string;
|
|
63
|
+
apiVersion?: string;
|
|
61
64
|
};
|
|
62
65
|
export type GoogleImageAgentConfig = {
|
|
63
66
|
projectId?: string;
|
|
@@ -73,6 +76,8 @@ export type MovieAgentInputs = AgentPromptInputs & {
|
|
|
73
76
|
};
|
|
74
77
|
export type GoogleMovieAgentParams = ImageAgentParams & {
|
|
75
78
|
duration?: number;
|
|
79
|
+
vertexai_project?: string;
|
|
80
|
+
vertexai_location?: string;
|
|
76
81
|
};
|
|
77
82
|
export type ReplicateMovieAgentParams = {
|
|
78
83
|
model: `${string}/${string}` | undefined;
|
|
@@ -139,6 +139,7 @@ export declare const provider2LLMAgent: {
|
|
|
139
139
|
readonly defaultModel: "gpt-5";
|
|
140
140
|
readonly keyName: "OPENAI_API_KEY";
|
|
141
141
|
readonly baseURLKeyName: "OPENAI_BASE_URL";
|
|
142
|
+
readonly apiVersionKeyName: "OPENAI_API_VERSION";
|
|
142
143
|
readonly max_tokens: 8192;
|
|
143
144
|
readonly models: readonly ["gpt-5", "gpt-5-nano", "gpt-5-mini", "gpt-4.1", "gpt-4.1-mini", "gpt-4.1-nano", "o3", "o3-mini", "o3-pro", "o1", "o1-pro", "gpt-4o", "gpt-4o-mini"];
|
|
144
145
|
};
|
|
@@ -154,7 +155,7 @@ export declare const provider2LLMAgent: {
|
|
|
154
155
|
readonly agentName: "geminiAgent";
|
|
155
156
|
readonly defaultModel: "gemini-2.5-flash";
|
|
156
157
|
readonly max_tokens: 8192;
|
|
157
|
-
readonly models: readonly ["gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite"];
|
|
158
|
+
readonly models: readonly ["gemini-3-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite"];
|
|
158
159
|
readonly keyName: "GEMINI_API_KEY";
|
|
159
160
|
};
|
|
160
161
|
readonly groq: {
|
|
@@ -56,7 +56,13 @@ export const provider2ImageAgent = {
|
|
|
56
56
|
google: {
|
|
57
57
|
agentName: "imageGenAIAgent",
|
|
58
58
|
defaultModel: "gemini-2.5-flash-image",
|
|
59
|
-
models: [
|
|
59
|
+
models: [
|
|
60
|
+
"imagen-4.0-generate-001",
|
|
61
|
+
"imagen-4.0-ultra-generate-001",
|
|
62
|
+
"imagen-4.0-fast-generate-001",
|
|
63
|
+
"gemini-2.5-flash-image",
|
|
64
|
+
"gemini-3-pro-image-preview",
|
|
65
|
+
],
|
|
60
66
|
keyName: "GEMINI_API_KEY",
|
|
61
67
|
},
|
|
62
68
|
replicate: {
|
|
@@ -252,6 +258,7 @@ export const provider2LLMAgent = {
|
|
|
252
258
|
defaultModel: "gpt-5",
|
|
253
259
|
keyName: "OPENAI_API_KEY",
|
|
254
260
|
baseURLKeyName: "OPENAI_BASE_URL",
|
|
261
|
+
apiVersionKeyName: "OPENAI_API_VERSION",
|
|
255
262
|
max_tokens: 8192,
|
|
256
263
|
models: [
|
|
257
264
|
"gpt-5",
|
|
@@ -282,7 +289,7 @@ export const provider2LLMAgent = {
|
|
|
282
289
|
agentName: "geminiAgent",
|
|
283
290
|
defaultModel: "gemini-2.5-flash",
|
|
284
291
|
max_tokens: 8192,
|
|
285
|
-
models: ["gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite"],
|
|
292
|
+
models: ["gemini-3-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite"],
|
|
286
293
|
keyName: "GEMINI_API_KEY",
|
|
287
294
|
},
|
|
288
295
|
groq: {
|
package/lib/types/schema.d.ts
CHANGED
|
@@ -43,6 +43,8 @@ export declare const speakerDataSchema: z.ZodObject<{
|
|
|
43
43
|
[x: string]: string;
|
|
44
44
|
}>>>;
|
|
45
45
|
model: z.ZodOptional<z.ZodString>;
|
|
46
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
47
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
46
48
|
}, z.core.$strict>;
|
|
47
49
|
export declare const speakerSchema: z.ZodObject<{
|
|
48
50
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -59,6 +61,8 @@ export declare const speakerSchema: z.ZodObject<{
|
|
|
59
61
|
[x: string]: string;
|
|
60
62
|
}>>>;
|
|
61
63
|
model: z.ZodOptional<z.ZodString>;
|
|
64
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
65
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
62
66
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
63
67
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
64
68
|
voiceId: z.ZodString;
|
|
@@ -74,6 +78,8 @@ export declare const speakerSchema: z.ZodObject<{
|
|
|
74
78
|
[x: string]: string;
|
|
75
79
|
}>>>;
|
|
76
80
|
model: z.ZodOptional<z.ZodString>;
|
|
81
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
82
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
77
83
|
}, z.core.$strict>>>;
|
|
78
84
|
}, z.core.$strict>;
|
|
79
85
|
export declare const speakerDictionarySchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
@@ -91,6 +97,8 @@ export declare const speakerDictionarySchema: z.ZodRecord<z.ZodString, z.ZodObje
|
|
|
91
97
|
[x: string]: string;
|
|
92
98
|
}>>>;
|
|
93
99
|
model: z.ZodOptional<z.ZodString>;
|
|
100
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
101
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
94
102
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
95
103
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
96
104
|
voiceId: z.ZodString;
|
|
@@ -106,6 +114,8 @@ export declare const speakerDictionarySchema: z.ZodRecord<z.ZodString, z.ZodObje
|
|
|
106
114
|
[x: string]: string;
|
|
107
115
|
}>>>;
|
|
108
116
|
model: z.ZodOptional<z.ZodString>;
|
|
117
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
118
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
109
119
|
}, z.core.$strict>>>;
|
|
110
120
|
}, z.core.$strict>>;
|
|
111
121
|
export declare const mulmoSpeechParamsSchema: z.ZodDefault<z.ZodObject<{
|
|
@@ -124,6 +134,8 @@ export declare const mulmoSpeechParamsSchema: z.ZodDefault<z.ZodObject<{
|
|
|
124
134
|
[x: string]: string;
|
|
125
135
|
}>>>;
|
|
126
136
|
model: z.ZodOptional<z.ZodString>;
|
|
137
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
138
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
127
139
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
128
140
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
129
141
|
voiceId: z.ZodString;
|
|
@@ -139,6 +151,8 @@ export declare const mulmoSpeechParamsSchema: z.ZodDefault<z.ZodObject<{
|
|
|
139
151
|
[x: string]: string;
|
|
140
152
|
}>>>;
|
|
141
153
|
model: z.ZodOptional<z.ZodString>;
|
|
154
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
155
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
142
156
|
}, z.core.$strict>>>;
|
|
143
157
|
}, z.core.$strict>>;
|
|
144
158
|
}, z.core.$strip>>;
|
|
@@ -437,6 +451,10 @@ export declare const mulmoBeatImageParamsSchema: z.ZodObject<{
|
|
|
437
451
|
quality: z.ZodOptional<z.ZodString>;
|
|
438
452
|
style: z.ZodOptional<z.ZodString>;
|
|
439
453
|
moderation: z.ZodOptional<z.ZodString>;
|
|
454
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
455
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
456
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
457
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
440
458
|
}, z.core.$strict>;
|
|
441
459
|
export declare const mulmoImageParamsSchema: z.ZodObject<{
|
|
442
460
|
provider: z.ZodOptional<z.ZodEnum<{
|
|
@@ -446,6 +464,10 @@ export declare const mulmoImageParamsSchema: z.ZodObject<{
|
|
|
446
464
|
quality: z.ZodOptional<z.ZodString>;
|
|
447
465
|
style: z.ZodOptional<z.ZodString>;
|
|
448
466
|
moderation: z.ZodOptional<z.ZodString>;
|
|
467
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
468
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
469
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
470
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
449
471
|
images: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
450
472
|
type: z.ZodLiteral<"image">;
|
|
451
473
|
source: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -763,6 +785,8 @@ export declare const mulmoMovieParamsSchema: z.ZodObject<{
|
|
|
763
785
|
type: z.ZodLiteral<"custom">;
|
|
764
786
|
filter: z.ZodString;
|
|
765
787
|
}, z.core.$strip>]>>>;
|
|
788
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
789
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
766
790
|
}, z.core.$strip>;
|
|
767
791
|
export declare const mulmoBeatSchema: z.ZodObject<{
|
|
768
792
|
speaker: z.ZodOptional<z.ZodString>;
|
|
@@ -891,6 +915,10 @@ export declare const mulmoBeatSchema: z.ZodObject<{
|
|
|
891
915
|
quality: z.ZodOptional<z.ZodString>;
|
|
892
916
|
style: z.ZodOptional<z.ZodString>;
|
|
893
917
|
moderation: z.ZodOptional<z.ZodString>;
|
|
918
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
919
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
920
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
921
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
894
922
|
}, z.core.$strict>>;
|
|
895
923
|
audioParams: z.ZodOptional<z.ZodObject<{
|
|
896
924
|
padding: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1123,6 +1151,8 @@ export declare const mulmoBeatSchema: z.ZodObject<{
|
|
|
1123
1151
|
type: z.ZodLiteral<"custom">;
|
|
1124
1152
|
filter: z.ZodString;
|
|
1125
1153
|
}, z.core.$strip>]>>>;
|
|
1154
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
1155
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
1126
1156
|
speed: z.ZodOptional<z.ZodNumber>;
|
|
1127
1157
|
}, z.core.$strip>>;
|
|
1128
1158
|
soundEffectParams: z.ZodOptional<z.ZodObject<{
|
|
@@ -1223,6 +1253,8 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
|
|
|
1223
1253
|
[x: string]: string;
|
|
1224
1254
|
}>>>;
|
|
1225
1255
|
model: z.ZodOptional<z.ZodString>;
|
|
1256
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
1257
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
1226
1258
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1227
1259
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1228
1260
|
voiceId: z.ZodString;
|
|
@@ -1238,6 +1270,8 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
|
|
|
1238
1270
|
[x: string]: string;
|
|
1239
1271
|
}>>>;
|
|
1240
1272
|
model: z.ZodOptional<z.ZodString>;
|
|
1273
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
1274
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
1241
1275
|
}, z.core.$strict>>>;
|
|
1242
1276
|
}, z.core.$strict>>;
|
|
1243
1277
|
}, z.core.$strip>>;
|
|
@@ -1249,6 +1283,10 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
|
|
|
1249
1283
|
quality: z.ZodOptional<z.ZodString>;
|
|
1250
1284
|
style: z.ZodOptional<z.ZodString>;
|
|
1251
1285
|
moderation: z.ZodOptional<z.ZodString>;
|
|
1286
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
1287
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
1288
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
1289
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
1252
1290
|
images: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
1253
1291
|
type: z.ZodLiteral<"image">;
|
|
1254
1292
|
source: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -1493,6 +1531,8 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
|
|
|
1493
1531
|
type: z.ZodLiteral<"custom">;
|
|
1494
1532
|
filter: z.ZodString;
|
|
1495
1533
|
}, z.core.$strip>]>>>;
|
|
1534
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
1535
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
1496
1536
|
}, z.core.$strip>>>;
|
|
1497
1537
|
soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
1498
1538
|
provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
@@ -1584,6 +1624,8 @@ export declare const mulmoScriptSchema: z.ZodObject<{
|
|
|
1584
1624
|
[x: string]: string;
|
|
1585
1625
|
}>>>;
|
|
1586
1626
|
model: z.ZodOptional<z.ZodString>;
|
|
1627
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
1628
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
1587
1629
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1588
1630
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1589
1631
|
voiceId: z.ZodString;
|
|
@@ -1599,6 +1641,8 @@ export declare const mulmoScriptSchema: z.ZodObject<{
|
|
|
1599
1641
|
[x: string]: string;
|
|
1600
1642
|
}>>>;
|
|
1601
1643
|
model: z.ZodOptional<z.ZodString>;
|
|
1644
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
1645
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
1602
1646
|
}, z.core.$strict>>>;
|
|
1603
1647
|
}, z.core.$strict>>;
|
|
1604
1648
|
}, z.core.$strip>>;
|
|
@@ -1610,6 +1654,10 @@ export declare const mulmoScriptSchema: z.ZodObject<{
|
|
|
1610
1654
|
quality: z.ZodOptional<z.ZodString>;
|
|
1611
1655
|
style: z.ZodOptional<z.ZodString>;
|
|
1612
1656
|
moderation: z.ZodOptional<z.ZodString>;
|
|
1657
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
1658
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
1659
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
1660
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
1613
1661
|
images: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
1614
1662
|
type: z.ZodLiteral<"image">;
|
|
1615
1663
|
source: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -1854,6 +1902,8 @@ export declare const mulmoScriptSchema: z.ZodObject<{
|
|
|
1854
1902
|
type: z.ZodLiteral<"custom">;
|
|
1855
1903
|
filter: z.ZodString;
|
|
1856
1904
|
}, z.core.$strip>]>>>;
|
|
1905
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
1906
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
1857
1907
|
}, z.core.$strip>>>;
|
|
1858
1908
|
soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
1859
1909
|
provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
@@ -2049,6 +2099,10 @@ export declare const mulmoScriptSchema: z.ZodObject<{
|
|
|
2049
2099
|
quality: z.ZodOptional<z.ZodString>;
|
|
2050
2100
|
style: z.ZodOptional<z.ZodString>;
|
|
2051
2101
|
moderation: z.ZodOptional<z.ZodString>;
|
|
2102
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
2103
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
2104
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
2105
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
2052
2106
|
}, z.core.$strict>>;
|
|
2053
2107
|
audioParams: z.ZodOptional<z.ZodObject<{
|
|
2054
2108
|
padding: z.ZodOptional<z.ZodNumber>;
|
|
@@ -2281,6 +2335,8 @@ export declare const mulmoScriptSchema: z.ZodObject<{
|
|
|
2281
2335
|
type: z.ZodLiteral<"custom">;
|
|
2282
2336
|
filter: z.ZodString;
|
|
2283
2337
|
}, z.core.$strip>]>>>;
|
|
2338
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
2339
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
2284
2340
|
speed: z.ZodOptional<z.ZodNumber>;
|
|
2285
2341
|
}, z.core.$strip>>;
|
|
2286
2342
|
soundEffectParams: z.ZodOptional<z.ZodObject<{
|
|
@@ -2456,6 +2512,8 @@ export declare const mulmoStudioSchema: z.ZodObject<{
|
|
|
2456
2512
|
[x: string]: string;
|
|
2457
2513
|
}>>>;
|
|
2458
2514
|
model: z.ZodOptional<z.ZodString>;
|
|
2515
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
2516
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
2459
2517
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
2460
2518
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
2461
2519
|
voiceId: z.ZodString;
|
|
@@ -2471,6 +2529,8 @@ export declare const mulmoStudioSchema: z.ZodObject<{
|
|
|
2471
2529
|
[x: string]: string;
|
|
2472
2530
|
}>>>;
|
|
2473
2531
|
model: z.ZodOptional<z.ZodString>;
|
|
2532
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
2533
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
2474
2534
|
}, z.core.$strict>>>;
|
|
2475
2535
|
}, z.core.$strict>>;
|
|
2476
2536
|
}, z.core.$strip>>;
|
|
@@ -2482,6 +2542,10 @@ export declare const mulmoStudioSchema: z.ZodObject<{
|
|
|
2482
2542
|
quality: z.ZodOptional<z.ZodString>;
|
|
2483
2543
|
style: z.ZodOptional<z.ZodString>;
|
|
2484
2544
|
moderation: z.ZodOptional<z.ZodString>;
|
|
2545
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
2546
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
2547
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
2548
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
2485
2549
|
images: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
2486
2550
|
type: z.ZodLiteral<"image">;
|
|
2487
2551
|
source: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -2726,6 +2790,8 @@ export declare const mulmoStudioSchema: z.ZodObject<{
|
|
|
2726
2790
|
type: z.ZodLiteral<"custom">;
|
|
2727
2791
|
filter: z.ZodString;
|
|
2728
2792
|
}, z.core.$strip>]>>>;
|
|
2793
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
2794
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
2729
2795
|
}, z.core.$strip>>>;
|
|
2730
2796
|
soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
2731
2797
|
provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
@@ -2921,6 +2987,10 @@ export declare const mulmoStudioSchema: z.ZodObject<{
|
|
|
2921
2987
|
quality: z.ZodOptional<z.ZodString>;
|
|
2922
2988
|
style: z.ZodOptional<z.ZodString>;
|
|
2923
2989
|
moderation: z.ZodOptional<z.ZodString>;
|
|
2990
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
2991
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
2992
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
2993
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
2924
2994
|
}, z.core.$strict>>;
|
|
2925
2995
|
audioParams: z.ZodOptional<z.ZodObject<{
|
|
2926
2996
|
padding: z.ZodOptional<z.ZodNumber>;
|
|
@@ -3153,6 +3223,8 @@ export declare const mulmoStudioSchema: z.ZodObject<{
|
|
|
3153
3223
|
type: z.ZodLiteral<"custom">;
|
|
3154
3224
|
filter: z.ZodString;
|
|
3155
3225
|
}, z.core.$strip>]>>>;
|
|
3226
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
3227
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
3156
3228
|
speed: z.ZodOptional<z.ZodNumber>;
|
|
3157
3229
|
}, z.core.$strip>>;
|
|
3158
3230
|
soundEffectParams: z.ZodOptional<z.ZodObject<{
|
|
@@ -3264,6 +3336,8 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
|
|
|
3264
3336
|
[x: string]: string;
|
|
3265
3337
|
}>>>;
|
|
3266
3338
|
model: z.ZodOptional<z.ZodString>;
|
|
3339
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
3340
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
3267
3341
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
3268
3342
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
3269
3343
|
voiceId: z.ZodString;
|
|
@@ -3279,6 +3353,8 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
|
|
|
3279
3353
|
[x: string]: string;
|
|
3280
3354
|
}>>>;
|
|
3281
3355
|
model: z.ZodOptional<z.ZodString>;
|
|
3356
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
3357
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
3282
3358
|
}, z.core.$strict>>>;
|
|
3283
3359
|
}, z.core.$strict>>;
|
|
3284
3360
|
}, z.core.$strip>>;
|
|
@@ -3290,6 +3366,10 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
|
|
|
3290
3366
|
quality: z.ZodOptional<z.ZodString>;
|
|
3291
3367
|
style: z.ZodOptional<z.ZodString>;
|
|
3292
3368
|
moderation: z.ZodOptional<z.ZodString>;
|
|
3369
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
3370
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
3371
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
3372
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
3293
3373
|
images: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
3294
3374
|
type: z.ZodLiteral<"image">;
|
|
3295
3375
|
source: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -3534,6 +3614,8 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
|
|
|
3534
3614
|
type: z.ZodLiteral<"custom">;
|
|
3535
3615
|
filter: z.ZodString;
|
|
3536
3616
|
}, z.core.$strip>]>>>;
|
|
3617
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
3618
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
3537
3619
|
}, z.core.$strip>>>;
|
|
3538
3620
|
soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
3539
3621
|
provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
@@ -3619,6 +3701,8 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
|
|
|
3619
3701
|
[x: string]: string;
|
|
3620
3702
|
}>>>;
|
|
3621
3703
|
model: z.ZodOptional<z.ZodString>;
|
|
3704
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
3705
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
3622
3706
|
lang: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
3623
3707
|
displayName: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
3624
3708
|
voiceId: z.ZodString;
|
|
@@ -3634,6 +3718,8 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
|
|
|
3634
3718
|
[x: string]: string;
|
|
3635
3719
|
}>>>;
|
|
3636
3720
|
model: z.ZodOptional<z.ZodString>;
|
|
3721
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
3722
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
3637
3723
|
}, z.core.$strict>>>;
|
|
3638
3724
|
}, z.core.$strict>>;
|
|
3639
3725
|
}, z.core.$strip>>;
|
|
@@ -3645,6 +3731,10 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
|
|
|
3645
3731
|
quality: z.ZodOptional<z.ZodString>;
|
|
3646
3732
|
style: z.ZodOptional<z.ZodString>;
|
|
3647
3733
|
moderation: z.ZodOptional<z.ZodString>;
|
|
3734
|
+
baseURL: z.ZodOptional<z.ZodString>;
|
|
3735
|
+
apiVersion: z.ZodOptional<z.ZodString>;
|
|
3736
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
3737
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
3648
3738
|
images: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
|
|
3649
3739
|
type: z.ZodLiteral<"image">;
|
|
3650
3740
|
source: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -3889,6 +3979,8 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
|
|
|
3889
3979
|
type: z.ZodLiteral<"custom">;
|
|
3890
3980
|
filter: z.ZodString;
|
|
3891
3981
|
}, z.core.$strip>]>>>;
|
|
3982
|
+
vertexai_project: z.ZodOptional<z.ZodString>;
|
|
3983
|
+
vertexai_location: z.ZodOptional<z.ZodString>;
|
|
3892
3984
|
}, z.core.$strip>>>;
|
|
3893
3985
|
soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
3894
3986
|
provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
package/lib/types/schema.js
CHANGED
|
@@ -39,6 +39,8 @@ export const speakerDataSchema = z
|
|
|
39
39
|
speechOptions: speechOptionsSchema.optional(),
|
|
40
40
|
provider: text2SpeechProviderSchema.optional(),
|
|
41
41
|
model: z.string().optional().describe("TTS model to use for this speaker"),
|
|
42
|
+
baseURL: z.string().optional(), // Azure/custom endpoint URL
|
|
43
|
+
apiVersion: z.string().optional(), // Azure API version (e.g., "2025-04-01-preview")
|
|
42
44
|
})
|
|
43
45
|
.strict();
|
|
44
46
|
export const speakerSchema = speakerDataSchema.extend({
|
|
@@ -240,6 +242,10 @@ export const mulmoBeatImageParamsSchema = z
|
|
|
240
242
|
quality: z.string().optional(), // optional image quality (model specific)
|
|
241
243
|
style: z.string().optional(), // optional image style
|
|
242
244
|
moderation: z.string().optional(), // optional image style
|
|
245
|
+
baseURL: z.string().optional(), // Azure/custom endpoint URL
|
|
246
|
+
apiVersion: z.string().optional(), // Azure API version (e.g., "2025-04-01-preview")
|
|
247
|
+
vertexai_project: z.string().optional(), // Google Cloud Project ID for Vertex AI
|
|
248
|
+
vertexai_location: z.string().optional(), // Vertex AI location (default: us-central1)
|
|
243
249
|
})
|
|
244
250
|
.strict();
|
|
245
251
|
export const mulmoImageParamsSchema = mulmoBeatImageParamsSchema
|
|
@@ -322,6 +328,8 @@ export const mulmoMovieParamsSchema = z.object({
|
|
|
322
328
|
fillOption: mulmoFillOptionSchema.optional(), // for movie.ts
|
|
323
329
|
transition: mulmoTransitionSchema.optional(), // for movie.ts
|
|
324
330
|
filters: z.array(mulmoVideoFilterSchema).optional(), // for movie.ts
|
|
331
|
+
vertexai_project: z.string().optional(), // Google Cloud Project ID for Vertex AI
|
|
332
|
+
vertexai_location: z.string().optional(), // Vertex AI location (default: us-central1)
|
|
325
333
|
});
|
|
326
334
|
export const mulmoBeatSchema = z
|
|
327
335
|
.object({
|