mulmocast 2.9.0 → 2.9.2
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/actions/movie.d.ts +2 -9
- package/lib/actions/movie.js +149 -147
- package/lib/agents/image_google_agent.d.ts +5 -0
- package/lib/agents/image_google_agent.js +86 -0
- package/lib/agents/movie_google_agent.d.ts +9 -0
- package/lib/agents/movie_google_agent.js +122 -0
- package/lib/agents/mulmo_prompts_agent.d.ts +7 -0
- package/lib/agents/mulmo_prompts_agent.js +37 -0
- package/lib/agents/prompts_data.d.ts +15 -0
- package/lib/agents/prompts_data.js +16 -0
- package/lib/agents/tts_nijivoice_agent.d.ts +5 -0
- package/lib/agents/tts_nijivoice_agent.js +69 -0
- package/lib/agents/validate_mulmo_script_agent.d.ts +17 -0
- package/lib/agents/validate_mulmo_script_agent.js +34 -0
- package/lib/cli/args.d.ts +15 -0
- package/lib/cli/args.js +62 -0
- package/lib/cli/bin.js +0 -0
- package/lib/cli/cli.d.ts +17 -0
- package/lib/cli/cli.js +117 -0
- package/lib/cli/run.d.ts +2 -0
- package/lib/cli/run.js +3 -0
- package/lib/cli/tool-args.d.ts +16 -0
- package/lib/cli/tool-args.js +64 -0
- package/lib/cli/tool-cli.d.ts +2 -0
- package/lib/cli/tool-cli.js +32 -0
- package/lib/cli/tool_commands/prompt/builder.d.ts +4 -0
- package/lib/cli/tool_commands/prompt/builder.js +11 -0
- package/lib/cli/tool_commands/prompt/handler.d.ts +4 -0
- package/lib/cli/tool_commands/prompt/handler.js +14 -0
- package/lib/cli/tool_commands/prompt/index.d.ts +4 -0
- package/lib/cli/tool_commands/prompt/index.js +4 -0
- package/lib/cli/tool_commands/schema/builder.d.ts +2 -0
- package/lib/cli/tool_commands/schema/builder.js +3 -0
- package/lib/cli/tool_commands/schema/handler.d.ts +2 -0
- package/lib/cli/tool_commands/schema/handler.js +12 -0
- package/lib/cli/tool_commands/schema/index.d.ts +4 -0
- package/lib/cli/tool_commands/schema/index.js +4 -0
- package/lib/cli/tool_commands/scripting/builder.d.ts +20 -0
- package/lib/cli/tool_commands/scripting/builder.js +63 -0
- package/lib/cli/tool_commands/scripting/handler.d.ts +12 -0
- package/lib/cli/tool_commands/scripting/handler.js +36 -0
- package/lib/cli/tool_commands/scripting/index.d.ts +4 -0
- package/lib/cli/tool_commands/scripting/index.js +4 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.js +8 -0
- package/lib/methods/mulmo_beat.d.ts +3 -0
- package/lib/methods/mulmo_beat.js +17 -0
- package/lib/methods/mulmo_beat_node.d.ts +3 -0
- package/lib/methods/mulmo_presentation_style.d.ts +5 -1
- package/lib/methods/mulmo_presentation_style.js +43 -1
- package/lib/methods/mulmo_script_template.d.ts +4 -0
- package/lib/methods/mulmo_script_template.js +6 -0
- package/lib/methods/mulmo_studio.d.ts +8 -0
- package/lib/methods/mulmo_studio.js +25 -0
- package/lib/methods/mulmo_studio_context.d.ts +6 -1
- package/lib/methods/mulmo_studio_context.js +36 -1
- package/lib/slide/blocks.d.ts +13 -0
- package/lib/slide/blocks.js +251 -0
- package/lib/slide/index.d.ts +6 -0
- package/lib/slide/index.js +7 -0
- package/lib/slide/layouts/big_quote.d.ts +2 -0
- package/lib/slide/layouts/big_quote.js +19 -0
- package/lib/slide/layouts/columns.d.ts +2 -0
- package/lib/slide/layouts/columns.js +53 -0
- package/lib/slide/layouts/comparison.d.ts +2 -0
- package/lib/slide/layouts/comparison.js +25 -0
- package/lib/slide/layouts/funnel.d.ts +2 -0
- package/lib/slide/layouts/funnel.js +25 -0
- package/lib/slide/layouts/grid.d.ts +2 -0
- package/lib/slide/layouts/grid.js +38 -0
- package/lib/slide/layouts/index.d.ts +3 -0
- package/lib/slide/layouts/index.js +46 -0
- package/lib/slide/layouts/matrix.d.ts +2 -0
- package/lib/slide/layouts/matrix.js +53 -0
- package/lib/slide/layouts/split.d.ts +2 -0
- package/lib/slide/layouts/split.js +51 -0
- package/lib/slide/layouts/stats.d.ts +2 -0
- package/lib/slide/layouts/stats.js +23 -0
- package/lib/slide/layouts/table.d.ts +2 -0
- package/lib/slide/layouts/table.js +10 -0
- package/lib/slide/layouts/timeline.d.ts +2 -0
- package/lib/slide/layouts/timeline.js +27 -0
- package/lib/slide/layouts/title.d.ts +2 -0
- package/lib/slide/layouts/title.js +19 -0
- package/lib/slide/layouts/waterfall.d.ts +2 -0
- package/lib/slide/layouts/waterfall.js +63 -0
- package/lib/slide/render.d.ts +17 -0
- package/lib/slide/render.js +101 -0
- package/lib/slide/schema.d.ts +9309 -0
- package/lib/slide/schema.js +434 -0
- package/lib/slide/utils.d.ts +76 -0
- package/lib/slide/utils.js +243 -0
- package/lib/tools/prompt.d.ts +1 -0
- package/lib/tools/prompt.js +18 -0
- package/lib/tools/seed.d.ts +3 -0
- package/lib/tools/seed.js +211 -0
- package/lib/tools/seed_from_url.d.ts +3 -0
- package/lib/tools/seed_from_url.js +188 -0
- package/lib/types/slide.d.ts +9309 -0
- package/lib/types/slide.js +434 -0
- package/lib/utils/assets.d.ts +18 -0
- package/lib/utils/assets.js +101 -0
- package/lib/utils/cli.d.ts +1 -0
- package/lib/utils/cli.js +15 -0
- package/lib/utils/const.d.ts +12 -0
- package/lib/utils/const.js +12 -0
- package/lib/utils/filters.js +11 -2
- package/lib/utils/image_preprocess.d.ts +14 -0
- package/lib/utils/image_preprocess.js +52 -0
- package/lib/utils/markdown.d.ts +3 -0
- package/lib/utils/markdown.js +42 -0
- package/lib/utils/pdf.d.ts +9 -0
- package/lib/utils/pdf.js +77 -0
- package/lib/utils/preprocess.d.ts +343 -0
- package/lib/utils/preprocess.js +58 -0
- package/lib/utils/provider2agent.d.ts +141 -0
- package/lib/utils/provider2agent.js +267 -0
- package/lib/utils/text_hash.d.ts +1 -0
- package/lib/utils/text_hash.js +4 -0
- package/package.json +8 -8
- package/scripts/test/test_voice_over_transition_no_audio.json +71 -0
- package/lib/utils/sdk_timeout.d.ts +0 -3
- package/lib/utils/sdk_timeout.js +0 -7
- package/scripts/test/test_captions_2.json~ +0 -278
- package/scripts/test/test_en_portrait.json~ +0 -31
- package/scripts/test/test_slide_image_ref_gemini_en.json~ +0 -289
- package/scripts/test/test_vertexai.json~ +0 -21
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export declare const provider2TTSAgent: {
|
|
2
|
+
nijivoice: {
|
|
3
|
+
agentName: string;
|
|
4
|
+
hasLimitedConcurrency: boolean;
|
|
5
|
+
};
|
|
6
|
+
openai: {
|
|
7
|
+
agentName: string;
|
|
8
|
+
hasLimitedConcurrency: boolean;
|
|
9
|
+
defaultModel: string;
|
|
10
|
+
defaultVoice: string;
|
|
11
|
+
};
|
|
12
|
+
google: {
|
|
13
|
+
agentName: string;
|
|
14
|
+
hasLimitedConcurrency: boolean;
|
|
15
|
+
};
|
|
16
|
+
elevenlabs: {
|
|
17
|
+
agentName: string;
|
|
18
|
+
hasLimitedConcurrency: boolean;
|
|
19
|
+
defaultModel: string;
|
|
20
|
+
models: string[];
|
|
21
|
+
};
|
|
22
|
+
mock: {
|
|
23
|
+
agentName: string;
|
|
24
|
+
hasLimitedConcurrency: boolean;
|
|
25
|
+
defaultModel: string;
|
|
26
|
+
models: string[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export declare const provider2ImageAgent: {
|
|
30
|
+
openai: {
|
|
31
|
+
agentName: string;
|
|
32
|
+
defaultModel: string;
|
|
33
|
+
models: string[];
|
|
34
|
+
};
|
|
35
|
+
google: {
|
|
36
|
+
agentName: string;
|
|
37
|
+
defaultModel: string;
|
|
38
|
+
models: string[];
|
|
39
|
+
};
|
|
40
|
+
replicate: {
|
|
41
|
+
agentName: string;
|
|
42
|
+
defaultModel: string;
|
|
43
|
+
models: string[];
|
|
44
|
+
};
|
|
45
|
+
mock: {
|
|
46
|
+
agentName: string;
|
|
47
|
+
defaultModel: string;
|
|
48
|
+
models: string[];
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export type ReplicateModel = `${string}/${string}`;
|
|
52
|
+
export declare const provider2MovieAgent: {
|
|
53
|
+
replicate: {
|
|
54
|
+
agentName: string;
|
|
55
|
+
defaultModel: ReplicateModel;
|
|
56
|
+
models: string[];
|
|
57
|
+
modelParams: Record<ReplicateModel, {
|
|
58
|
+
durations: number[];
|
|
59
|
+
start_image: string | undefined;
|
|
60
|
+
last_image?: string;
|
|
61
|
+
price_per_sec: number;
|
|
62
|
+
}>;
|
|
63
|
+
};
|
|
64
|
+
google: {
|
|
65
|
+
agentName: string;
|
|
66
|
+
defaultModel: string;
|
|
67
|
+
models: string[];
|
|
68
|
+
};
|
|
69
|
+
mock: {
|
|
70
|
+
agentName: string;
|
|
71
|
+
defaultModel: string;
|
|
72
|
+
models: string[];
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
export declare const provider2SoundEffectAgent: {
|
|
76
|
+
replicate: {
|
|
77
|
+
agentName: string;
|
|
78
|
+
defaultModel: ReplicateModel;
|
|
79
|
+
models: ReplicateModel[];
|
|
80
|
+
modelParams: Record<ReplicateModel, {
|
|
81
|
+
identifier?: `${string}/${string}:${string}`;
|
|
82
|
+
}>;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
export declare const provider2LipSyncAgent: {
|
|
86
|
+
replicate: {
|
|
87
|
+
agentName: string;
|
|
88
|
+
defaultModel: ReplicateModel;
|
|
89
|
+
models: ReplicateModel[];
|
|
90
|
+
modelParams: Record<ReplicateModel, {
|
|
91
|
+
identifier?: `${string}/${string}:${string}` | `${string}/${string}`;
|
|
92
|
+
video?: string;
|
|
93
|
+
audio: string;
|
|
94
|
+
image?: string;
|
|
95
|
+
}>;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
export declare const provider2LLMAgent: {
|
|
99
|
+
readonly openai: {
|
|
100
|
+
readonly agentName: "openAIAgent";
|
|
101
|
+
readonly defaultModel: "gpt-5";
|
|
102
|
+
readonly max_tokens: 8192;
|
|
103
|
+
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"];
|
|
104
|
+
};
|
|
105
|
+
readonly anthropic: {
|
|
106
|
+
readonly agentName: "anthropicAgent";
|
|
107
|
+
readonly defaultModel: "claude-3-7-sonnet-20250219";
|
|
108
|
+
readonly max_tokens: 8192;
|
|
109
|
+
readonly models: readonly ["claude-opus-4-1-20250805", "claude-opus-4-20250514", "claude-sonnet-4-20250514", "claude-3-7-sonnet-20250219", "claude-3-haiku-20240307"];
|
|
110
|
+
};
|
|
111
|
+
readonly gemini: {
|
|
112
|
+
readonly agentName: "geminiAgent";
|
|
113
|
+
readonly defaultModel: "gemini-2.5-flash";
|
|
114
|
+
readonly max_tokens: 8192;
|
|
115
|
+
readonly models: readonly ["gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite", "gemini-2.0-flash"];
|
|
116
|
+
};
|
|
117
|
+
readonly groq: {
|
|
118
|
+
readonly agentName: "groqAgent";
|
|
119
|
+
readonly defaultModel: "llama-3.1-8b-instant";
|
|
120
|
+
readonly max_tokens: 4096;
|
|
121
|
+
readonly models: readonly ["llama-3.1-8b-instant", "llama-3.3-70b-versatile", "deepseek-r1-distill-llama-70b", "openai/gpt-oss-120b", "openai/gpt-oss-20b"];
|
|
122
|
+
};
|
|
123
|
+
readonly mock: {
|
|
124
|
+
readonly agentName: "mediaMockAgent";
|
|
125
|
+
readonly defaultModel: "mock";
|
|
126
|
+
readonly max_tokens: 4096;
|
|
127
|
+
readonly models: readonly ["mock"];
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
export declare const defaultProviders: {
|
|
131
|
+
tts: keyof typeof provider2TTSAgent;
|
|
132
|
+
text2image: keyof typeof provider2ImageAgent;
|
|
133
|
+
text2movie: keyof typeof provider2MovieAgent;
|
|
134
|
+
text2Html: keyof typeof provider2LLMAgent;
|
|
135
|
+
llm: keyof typeof provider2LLMAgent;
|
|
136
|
+
soundEffect: keyof typeof provider2SoundEffectAgent;
|
|
137
|
+
lipSync: keyof typeof provider2LipSyncAgent;
|
|
138
|
+
};
|
|
139
|
+
export declare const llm: (keyof typeof provider2LLMAgent)[];
|
|
140
|
+
export type LLM = keyof typeof provider2LLMAgent;
|
|
141
|
+
export declare const htmlLLMProvider: string[];
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
// node & browser
|
|
2
|
+
export const provider2TTSAgent = {
|
|
3
|
+
nijivoice: {
|
|
4
|
+
agentName: "ttsNijivoiceAgent",
|
|
5
|
+
hasLimitedConcurrency: true,
|
|
6
|
+
},
|
|
7
|
+
openai: {
|
|
8
|
+
agentName: "ttsOpenaiAgent",
|
|
9
|
+
hasLimitedConcurrency: false,
|
|
10
|
+
defaultModel: "gpt-4o-mini-tts",
|
|
11
|
+
defaultVoice: "shimmer",
|
|
12
|
+
},
|
|
13
|
+
google: {
|
|
14
|
+
agentName: "ttsGoogleAgent",
|
|
15
|
+
hasLimitedConcurrency: false,
|
|
16
|
+
},
|
|
17
|
+
elevenlabs: {
|
|
18
|
+
agentName: "ttsElevenlabsAgent",
|
|
19
|
+
hasLimitedConcurrency: true,
|
|
20
|
+
defaultModel: "eleven_multilingual_v2",
|
|
21
|
+
// Models | ElevenLabs Documentation
|
|
22
|
+
// https://elevenlabs.io/docs/models
|
|
23
|
+
models: ["eleven_multilingual_v2", "eleven_turbo_v2_5", "eleven_turbo_v2", "eleven_flash_v2_5", "eleven_flash_v2"],
|
|
24
|
+
},
|
|
25
|
+
mock: {
|
|
26
|
+
agentName: "mediaMockAgent",
|
|
27
|
+
hasLimitedConcurrency: true,
|
|
28
|
+
defaultModel: "mock-model",
|
|
29
|
+
models: ["mock-model"],
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export const provider2ImageAgent = {
|
|
33
|
+
openai: {
|
|
34
|
+
agentName: "imageOpenaiAgent",
|
|
35
|
+
defaultModel: "gpt-image-1",
|
|
36
|
+
models: ["dall-e-3", "gpt-image-1"],
|
|
37
|
+
},
|
|
38
|
+
google: {
|
|
39
|
+
agentName: "imageGenAIAgent",
|
|
40
|
+
defaultModel: "gemini-2.5-flash-image-preview",
|
|
41
|
+
models: ["imagen-3.0-generate-002", "imagen-4.0-generate-preview-06-06", "imagen-4.0-ultra-generate-preview-06-06", "gemini-2.5-flash-image-preview"],
|
|
42
|
+
},
|
|
43
|
+
replicate: {
|
|
44
|
+
agentName: "imageReplicateAgent",
|
|
45
|
+
defaultModel: "bytedance/seedream-4",
|
|
46
|
+
models: ["bytedance/seedream-4", "qwen/qwen-image"],
|
|
47
|
+
},
|
|
48
|
+
mock: {
|
|
49
|
+
agentName: "mediaMockAgent",
|
|
50
|
+
defaultModel: "mock-model",
|
|
51
|
+
models: ["mock-model"],
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
export const provider2MovieAgent = {
|
|
55
|
+
replicate: {
|
|
56
|
+
agentName: "movieReplicateAgent",
|
|
57
|
+
defaultModel: "bytedance/seedance-1-lite",
|
|
58
|
+
models: [
|
|
59
|
+
"bytedance/seedance-1-lite",
|
|
60
|
+
"bytedance/seedance-1-pro",
|
|
61
|
+
"kwaivgi/kling-v1.6-pro",
|
|
62
|
+
"kwaivgi/kling-v2.1",
|
|
63
|
+
"kwaivgi/kling-v2.1-master",
|
|
64
|
+
"google/veo-2",
|
|
65
|
+
"google/veo-3",
|
|
66
|
+
"google/veo-3-fast",
|
|
67
|
+
"minimax/video-01",
|
|
68
|
+
"minimax/hailuo-02",
|
|
69
|
+
"minimax/hailuo-02-fast",
|
|
70
|
+
"pixverse/pixverse-v4.5",
|
|
71
|
+
"wan-video/wan-2.2-i2v-480p-fast",
|
|
72
|
+
"wan-video/wan-2.2-t2v-480p-fast",
|
|
73
|
+
],
|
|
74
|
+
modelParams: {
|
|
75
|
+
"bytedance/seedance-1-lite": {
|
|
76
|
+
durations: [5, 10],
|
|
77
|
+
start_image: "image",
|
|
78
|
+
last_image: "last_frame_image",
|
|
79
|
+
price_per_sec: 0.036, // in USD
|
|
80
|
+
},
|
|
81
|
+
"bytedance/seedance-1-pro": {
|
|
82
|
+
durations: [5, 10],
|
|
83
|
+
start_image: "image",
|
|
84
|
+
last_image: "last_frame_image",
|
|
85
|
+
price_per_sec: 0.15,
|
|
86
|
+
},
|
|
87
|
+
"kwaivgi/kling-v1.6-pro": {
|
|
88
|
+
durations: [5, 10],
|
|
89
|
+
start_image: "start_image",
|
|
90
|
+
price_per_sec: 0.095,
|
|
91
|
+
},
|
|
92
|
+
"kwaivgi/kling-v2.1": {
|
|
93
|
+
durations: [5, 10],
|
|
94
|
+
start_image: "start_image",
|
|
95
|
+
price_per_sec: 0.05,
|
|
96
|
+
},
|
|
97
|
+
"kwaivgi/kling-v2.1-master": {
|
|
98
|
+
durations: [5, 10],
|
|
99
|
+
start_image: "start_image",
|
|
100
|
+
price_per_sec: 0.28,
|
|
101
|
+
},
|
|
102
|
+
"google/veo-2": {
|
|
103
|
+
durations: [5, 6, 7, 8],
|
|
104
|
+
start_image: "image",
|
|
105
|
+
price_per_sec: 0.5,
|
|
106
|
+
},
|
|
107
|
+
"google/veo-3": {
|
|
108
|
+
durations: [8],
|
|
109
|
+
start_image: "image",
|
|
110
|
+
price_per_sec: 0.75,
|
|
111
|
+
},
|
|
112
|
+
"google/veo-3-fast": {
|
|
113
|
+
durations: [8],
|
|
114
|
+
start_image: "image",
|
|
115
|
+
price_per_sec: 0.4,
|
|
116
|
+
},
|
|
117
|
+
"minimax/video-01": {
|
|
118
|
+
durations: [6],
|
|
119
|
+
start_image: "first_frame_image",
|
|
120
|
+
price_per_sec: 0.5,
|
|
121
|
+
},
|
|
122
|
+
"minimax/hailuo-02": {
|
|
123
|
+
durations: [6], // NOTE: 10 for only 720p
|
|
124
|
+
start_image: "first_frame_image",
|
|
125
|
+
price_per_sec: 0.08,
|
|
126
|
+
},
|
|
127
|
+
"minimax/hailuo-02-fast": {
|
|
128
|
+
durations: [6, 10], // NOTE: 512P
|
|
129
|
+
start_image: "first_frame_image",
|
|
130
|
+
price_per_sec: 0.0166,
|
|
131
|
+
},
|
|
132
|
+
"pixverse/pixverse-v4.5": {
|
|
133
|
+
durations: [5, 8],
|
|
134
|
+
start_image: "image",
|
|
135
|
+
last_image: "last_frame_image",
|
|
136
|
+
price_per_sec: 0.12,
|
|
137
|
+
},
|
|
138
|
+
"wan-video/wan-2.2-i2v-480p-fast": {
|
|
139
|
+
durations: [5],
|
|
140
|
+
start_image: "image",
|
|
141
|
+
price_per_sec: 0.012,
|
|
142
|
+
},
|
|
143
|
+
"wan-video/wan-2.2-t2v-480p-fast": {
|
|
144
|
+
durations: [5],
|
|
145
|
+
start_image: undefined,
|
|
146
|
+
price_per_sec: 0.012,
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
google: {
|
|
151
|
+
agentName: "movieGenAIAgent",
|
|
152
|
+
defaultModel: "veo-2.0-generate-001",
|
|
153
|
+
models: ["veo-2.0-generate-001", "veo-3.0-generate-preview"],
|
|
154
|
+
},
|
|
155
|
+
mock: {
|
|
156
|
+
agentName: "mediaMockAgent",
|
|
157
|
+
defaultModel: "mock-model",
|
|
158
|
+
models: ["mock-model"],
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
export const provider2SoundEffectAgent = {
|
|
162
|
+
replicate: {
|
|
163
|
+
agentName: "soundEffectReplicateAgent",
|
|
164
|
+
defaultModel: "zsxkib/mmaudio",
|
|
165
|
+
models: ["zsxkib/mmaudio"],
|
|
166
|
+
modelParams: {
|
|
167
|
+
"zsxkib/mmaudio": {
|
|
168
|
+
identifier: "zsxkib/mmaudio:62871fb59889b2d7c13777f08deb3b36bdff88f7e1d53a50ad7694548a41b484",
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
export const provider2LipSyncAgent = {
|
|
174
|
+
replicate: {
|
|
175
|
+
agentName: "lipSyncReplicateAgent",
|
|
176
|
+
defaultModel: "bytedance/omni-human",
|
|
177
|
+
models: ["bytedance/latentsync", "tmappdev/lipsync", "bytedance/omni-human"],
|
|
178
|
+
modelParams: {
|
|
179
|
+
"bytedance/latentsync": {
|
|
180
|
+
identifier: "bytedance/latentsync:637ce1919f807ca20da3a448ddc2743535d2853649574cd52a933120e9b9e293",
|
|
181
|
+
video: "video",
|
|
182
|
+
audio: "audio",
|
|
183
|
+
},
|
|
184
|
+
"tmappdev/lipsync": {
|
|
185
|
+
identifier: "tmappdev/lipsync:c54ce2fe673ea59b857b91250b3d71a2cd304a78f2370687632805c8405fbf4c",
|
|
186
|
+
video: "video_input",
|
|
187
|
+
audio: "audio_input",
|
|
188
|
+
},
|
|
189
|
+
"bytedance/omni-human": {
|
|
190
|
+
identifier: "bytedance/omni-human",
|
|
191
|
+
image: "image",
|
|
192
|
+
audio: "audio",
|
|
193
|
+
price_per_sec: 0.14,
|
|
194
|
+
},
|
|
195
|
+
/* NOTE: This model does not work with large base64 urls.
|
|
196
|
+
"sync/lipsync-2": {
|
|
197
|
+
video: "video",
|
|
198
|
+
audio: "audio",
|
|
199
|
+
},
|
|
200
|
+
*/
|
|
201
|
+
/* NOTE: This model does not work well for some unknown reason.
|
|
202
|
+
"kwaivgi/kling-lip-sync": {
|
|
203
|
+
video: "video_url",
|
|
204
|
+
audio: "audio_file",
|
|
205
|
+
},
|
|
206
|
+
*/
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
// : Record<LLM, { agent: string; defaultModel: string; max_tokens: number }>
|
|
211
|
+
export const provider2LLMAgent = {
|
|
212
|
+
openai: {
|
|
213
|
+
agentName: "openAIAgent",
|
|
214
|
+
defaultModel: "gpt-5",
|
|
215
|
+
max_tokens: 8192,
|
|
216
|
+
models: [
|
|
217
|
+
"gpt-5",
|
|
218
|
+
"gpt-5-nano",
|
|
219
|
+
"gpt-5-mini",
|
|
220
|
+
"gpt-4.1",
|
|
221
|
+
"gpt-4.1-mini",
|
|
222
|
+
"gpt-4.1-nano",
|
|
223
|
+
"o3",
|
|
224
|
+
"o3-mini",
|
|
225
|
+
"o3-pro",
|
|
226
|
+
"o1",
|
|
227
|
+
"o1-pro",
|
|
228
|
+
"gpt-4o",
|
|
229
|
+
"gpt-4o-mini",
|
|
230
|
+
],
|
|
231
|
+
},
|
|
232
|
+
anthropic: {
|
|
233
|
+
agentName: "anthropicAgent",
|
|
234
|
+
defaultModel: "claude-3-7-sonnet-20250219",
|
|
235
|
+
max_tokens: 8192,
|
|
236
|
+
models: ["claude-opus-4-1-20250805", "claude-opus-4-20250514", "claude-sonnet-4-20250514", "claude-3-7-sonnet-20250219", "claude-3-haiku-20240307"],
|
|
237
|
+
},
|
|
238
|
+
gemini: {
|
|
239
|
+
agentName: "geminiAgent",
|
|
240
|
+
defaultModel: "gemini-2.5-flash",
|
|
241
|
+
max_tokens: 8192,
|
|
242
|
+
models: ["gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite", "gemini-2.0-flash"],
|
|
243
|
+
},
|
|
244
|
+
groq: {
|
|
245
|
+
agentName: "groqAgent",
|
|
246
|
+
defaultModel: "llama-3.1-8b-instant",
|
|
247
|
+
max_tokens: 4096,
|
|
248
|
+
models: ["llama-3.1-8b-instant", "llama-3.3-70b-versatile", "deepseek-r1-distill-llama-70b", "openai/gpt-oss-120b", "openai/gpt-oss-20b"],
|
|
249
|
+
},
|
|
250
|
+
mock: {
|
|
251
|
+
agentName: "mediaMockAgent",
|
|
252
|
+
defaultModel: "mock",
|
|
253
|
+
max_tokens: 4096,
|
|
254
|
+
models: ["mock"],
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
export const defaultProviders = {
|
|
258
|
+
tts: "openai",
|
|
259
|
+
text2image: "openai",
|
|
260
|
+
text2movie: "replicate",
|
|
261
|
+
text2Html: "openai",
|
|
262
|
+
llm: "openai",
|
|
263
|
+
soundEffect: "replicate",
|
|
264
|
+
lipSync: "replicate",
|
|
265
|
+
};
|
|
266
|
+
export const llm = Object.keys(provider2LLMAgent);
|
|
267
|
+
export const htmlLLMProvider = ["openai", "anthropic", "mock"];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const text2hash: (input: string) => string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mulmocast",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.node.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"resolutions": {
|
|
27
27
|
"minimatch": "^10.2.5",
|
|
28
|
-
"tar": "7.5.
|
|
28
|
+
"tar": "7.5.22",
|
|
29
29
|
"yauzl": "^3.4.0"
|
|
30
30
|
},
|
|
31
31
|
"bin": {
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"homepage": "https://github.com/receptron/mulmocast-cli#readme",
|
|
90
90
|
"dependencies": {
|
|
91
91
|
"@google-cloud/text-to-speech": "^6.4.1",
|
|
92
|
-
"@google/genai": "^2.
|
|
92
|
+
"@google/genai": "^2.13.0",
|
|
93
93
|
"@graphai/anthropic_agent": "^2.0.12",
|
|
94
94
|
"@graphai/browserless_agent": "^2.0.3",
|
|
95
95
|
"@graphai/gemini_agent": "^2.0.5",
|
|
@@ -107,12 +107,12 @@
|
|
|
107
107
|
"@mulmocast/deck": "^1.1.0",
|
|
108
108
|
"@tavily/core": "^0.7.6",
|
|
109
109
|
"archiver": "^8.0.0",
|
|
110
|
-
"clipboardy": "^5.3.
|
|
110
|
+
"clipboardy": "^5.3.2",
|
|
111
111
|
"dotenv": "^17.4.2",
|
|
112
112
|
"graphai": "^2.0.18",
|
|
113
113
|
"js-tiktoken": "^1.0.21",
|
|
114
114
|
"jsdom": "^29.1.1",
|
|
115
|
-
"marked": "^18.0.
|
|
115
|
+
"marked": "^18.0.7",
|
|
116
116
|
"mulmocast-vision": "^1.0.12",
|
|
117
117
|
"ora": "^9.4.1",
|
|
118
118
|
"puppeteer": "^25.3.0",
|
|
@@ -128,16 +128,16 @@
|
|
|
128
128
|
"@types/jsdom": "^28.0.3",
|
|
129
129
|
"@types/yargs": "^17.0.35",
|
|
130
130
|
"cross-env": "^10.1.0",
|
|
131
|
-
"eslint": "^10.
|
|
131
|
+
"eslint": "^10.8.0",
|
|
132
132
|
"eslint-config-prettier": "^10.1.8",
|
|
133
133
|
"eslint-plugin-import": "^2.32.0",
|
|
134
134
|
"eslint-plugin-prettier": "^5.5.6",
|
|
135
135
|
"eslint-plugin-sonarjs": "^4.2.0",
|
|
136
136
|
"globals": "^17.7.0",
|
|
137
|
-
"prettier": "^3.9.
|
|
137
|
+
"prettier": "^3.9.6",
|
|
138
138
|
"tsx": "^4.23.1",
|
|
139
139
|
"typescript": "6.0.3",
|
|
140
|
-
"typescript-eslint": "^8.
|
|
140
|
+
"typescript-eslint": "^8.65.0"
|
|
141
141
|
},
|
|
142
142
|
"engines": {
|
|
143
143
|
"node": ">=22.0.0"
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$mulmocast": {
|
|
3
|
+
"version": "1.1"
|
|
4
|
+
},
|
|
5
|
+
"lang": "en",
|
|
6
|
+
"title": "VoiceOver Transition Test",
|
|
7
|
+
"movieParams": {
|
|
8
|
+
"transition": {
|
|
9
|
+
"type": "fade",
|
|
10
|
+
"duration": 1.0
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"beats": [
|
|
14
|
+
{
|
|
15
|
+
"speaker": "Presenter",
|
|
16
|
+
"text": "",
|
|
17
|
+
"duration": 3.0,
|
|
18
|
+
"image": {
|
|
19
|
+
"type": "image",
|
|
20
|
+
"source": {
|
|
21
|
+
"kind": "path",
|
|
22
|
+
"path": "../../assets/images/mulmocast_credit.png"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"speaker": "Presenter",
|
|
28
|
+
"text": "",
|
|
29
|
+
"duration": 2.0,
|
|
30
|
+
"image": {
|
|
31
|
+
"type": "voice_over"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"speaker": "Presenter",
|
|
36
|
+
"text": "",
|
|
37
|
+
"duration": 3.0,
|
|
38
|
+
"image": {
|
|
39
|
+
"type": "textSlide",
|
|
40
|
+
"slide": {
|
|
41
|
+
"title": "Fade after a voice_over"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"speaker": "Presenter",
|
|
47
|
+
"text": "",
|
|
48
|
+
"duration": 2.0,
|
|
49
|
+
"image": {
|
|
50
|
+
"type": "voice_over"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"speaker": "Presenter",
|
|
55
|
+
"text": "",
|
|
56
|
+
"duration": 3.0,
|
|
57
|
+
"movieParams": {
|
|
58
|
+
"transition": {
|
|
59
|
+
"type": "wipeleft",
|
|
60
|
+
"duration": 1.0
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"image": {
|
|
64
|
+
"type": "textSlide",
|
|
65
|
+
"slide": {
|
|
66
|
+
"title": "Wipe after a voice_over"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
package/lib/utils/sdk_timeout.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Timeout budgets for provider SDK calls (OpenAI has its own in openai_client.ts).
|
|
2
|
-
// Generous safety nets against a stalled connection or a never-completing
|
|
3
|
-
// operation — NOT tight deadlines. A stall becomes a rejection so the caller's
|
|
4
|
-
// GraphAI `retry` can recover instead of hanging forever.
|
|
5
|
-
export const GENAI_REQUEST_TIMEOUT_MS = 120_000; // per @google/genai API call (kick-off / each poll)
|
|
6
|
-
export const REPLICATE_RUN_TIMEOUT_MS = 600_000; // whole replicate.run() job (video models run minutes)
|
|
7
|
-
export const VIDEO_POLL_TIMEOUT_MS = 1_200_000; // wall-clock cap for a long-running Veo video operation
|