@vibeframe/cli 0.33.1 → 0.36.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.
- package/dist/commands/ai-edit.d.ts.map +1 -1
- package/dist/commands/ai-edit.js +46 -5
- package/dist/commands/ai-edit.js.map +1 -1
- package/dist/commands/ai-script-pipeline-cli.d.ts.map +1 -1
- package/dist/commands/ai-script-pipeline-cli.js +14 -4
- package/dist/commands/ai-script-pipeline-cli.js.map +1 -1
- package/dist/commands/detect.d.ts +53 -0
- package/dist/commands/detect.d.ts.map +1 -1
- package/dist/commands/detect.js +140 -0
- package/dist/commands/detect.js.map +1 -1
- package/dist/commands/doctor.js +105 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/generate.d.ts +39 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +99 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/setup.js +7 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -28
- package/dist/index.js.map +1 -1
- package/dist/utils/api-key.d.ts +0 -3
- package/dist/utils/api-key.d.ts.map +1 -1
- package/dist/utils/api-key.js +17 -2
- package/dist/utils/api-key.js.map +1 -1
- package/dist/utils/first-run.d.ts +4 -0
- package/dist/utils/first-run.d.ts.map +1 -1
- package/dist/utils/first-run.js +29 -3
- package/dist/utils/first-run.js.map +1 -1
- package/dist/utils/input-validation.d.ts +27 -0
- package/dist/utils/input-validation.d.ts.map +1 -0
- package/dist/utils/input-validation.js +67 -0
- package/dist/utils/input-validation.js.map +1 -0
- package/dist/utils/remotion.d.ts +21 -0
- package/dist/utils/remotion.d.ts.map +1 -1
- package/dist/utils/remotion.js +165 -17
- package/dist/utils/remotion.js.map +1 -1
- package/package.json +19 -3
package/dist/commands/doctor.js
CHANGED
|
@@ -86,6 +86,37 @@ Examples:
|
|
|
86
86
|
}
|
|
87
87
|
printReport(results);
|
|
88
88
|
});
|
|
89
|
+
/** FFmpeg filters required by offline commands */
|
|
90
|
+
const REQUIRED_FFMPEG_FILTERS = {
|
|
91
|
+
drawtext: {
|
|
92
|
+
commands: ["edit text-overlay", "edit caption"],
|
|
93
|
+
fix: {
|
|
94
|
+
darwin: "brew uninstall ffmpeg && brew install ffmpeg",
|
|
95
|
+
linux: "sudo apt install ffmpeg (or rebuild with --enable-libfreetype)",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
subtitles: {
|
|
99
|
+
commands: ["edit caption"],
|
|
100
|
+
fix: {
|
|
101
|
+
darwin: "brew uninstall ffmpeg && brew install ffmpeg",
|
|
102
|
+
linux: "sudo apt install ffmpeg (or rebuild with --enable-libass)",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
afftdn: {
|
|
106
|
+
commands: ["edit noise-reduce"],
|
|
107
|
+
fix: {
|
|
108
|
+
darwin: "brew uninstall ffmpeg && brew install ffmpeg",
|
|
109
|
+
linux: "sudo apt install ffmpeg (or rebuild with --enable-libfftw3)",
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
/** Optional external tools for advanced commands */
|
|
114
|
+
const OPTIONAL_TOOLS = {
|
|
115
|
+
remotion: {
|
|
116
|
+
commands: ["generate motion", "edit caption (fallback)"],
|
|
117
|
+
install: "npm install -g @remotion/cli",
|
|
118
|
+
},
|
|
119
|
+
};
|
|
89
120
|
async function runDiagnostics() {
|
|
90
121
|
loadEnv();
|
|
91
122
|
// System checks
|
|
@@ -102,6 +133,50 @@ async function runDiagnostics() {
|
|
|
102
133
|
ffmpegVersion = "unknown";
|
|
103
134
|
}
|
|
104
135
|
}
|
|
136
|
+
// FFmpeg filter checks
|
|
137
|
+
let ffmpegFilters;
|
|
138
|
+
if (ffmpegExists) {
|
|
139
|
+
try {
|
|
140
|
+
const filtersResult = await execSafe("ffmpeg", ["-filters"]);
|
|
141
|
+
const filtersOutput = filtersResult.stdout;
|
|
142
|
+
const platform = process.platform;
|
|
143
|
+
ffmpegFilters = {};
|
|
144
|
+
for (const [filterName, info] of Object.entries(REQUIRED_FFMPEG_FILTERS)) {
|
|
145
|
+
const available = filtersOutput.includes(filterName);
|
|
146
|
+
ffmpegFilters[filterName] = {
|
|
147
|
+
available,
|
|
148
|
+
commands: info.commands,
|
|
149
|
+
...(!available && info.fix[platform] ? { fix: info.fix[platform] } : {}),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// filter check failed, skip
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Optional tools check
|
|
158
|
+
const optionalTools = {};
|
|
159
|
+
for (const [toolName, info] of Object.entries(OPTIONAL_TOOLS)) {
|
|
160
|
+
let installed = false;
|
|
161
|
+
if (toolName === "remotion") {
|
|
162
|
+
// Check global install without triggering npx download
|
|
163
|
+
try {
|
|
164
|
+
await execSafe("npx", ["--no", "remotion", "--version"], { timeout: 5000 });
|
|
165
|
+
installed = true;
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
installed = false;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
installed = commandExists(toolName);
|
|
173
|
+
}
|
|
174
|
+
optionalTools[toolName] = {
|
|
175
|
+
installed,
|
|
176
|
+
commands: info.commands,
|
|
177
|
+
install: info.install,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
105
180
|
let configExists = false;
|
|
106
181
|
try {
|
|
107
182
|
await access(CONFIG_PATH);
|
|
@@ -127,8 +202,9 @@ async function runDiagnostics() {
|
|
|
127
202
|
return {
|
|
128
203
|
system: {
|
|
129
204
|
node: { version: nodeVersion, ok: true },
|
|
130
|
-
ffmpeg: { version: ffmpegVersion, ok: ffmpegExists },
|
|
205
|
+
ffmpeg: { version: ffmpegVersion, ok: ffmpegExists, ...(ffmpegFilters ? { filters: ffmpegFilters } : {}) },
|
|
131
206
|
config: { path: CONFIG_PATH, ok: configExists },
|
|
207
|
+
...(Object.keys(optionalTools).length > 0 ? { optionalTools } : {}),
|
|
132
208
|
},
|
|
133
209
|
providers,
|
|
134
210
|
readyCount,
|
|
@@ -148,6 +224,34 @@ function printReport(results) {
|
|
|
148
224
|
else {
|
|
149
225
|
console.log(` FFmpeg ${chalk.red("NOT FOUND")} ${chalk.dim("Install: brew install ffmpeg")}`);
|
|
150
226
|
}
|
|
227
|
+
// FFmpeg filters
|
|
228
|
+
if (results.system.ffmpeg.ok && results.system.ffmpeg.filters) {
|
|
229
|
+
const filters = results.system.ffmpeg.filters;
|
|
230
|
+
const missingFilters = Object.entries(filters).filter(([, f]) => !f.available);
|
|
231
|
+
if (missingFilters.length > 0) {
|
|
232
|
+
for (const [name, info] of missingFilters) {
|
|
233
|
+
console.log(` Filter ${chalk.yellow(`${name} MISSING`)} ${chalk.dim(`needed by: ${info.commands.join(", ")}`)}`);
|
|
234
|
+
if (info.fix) {
|
|
235
|
+
console.log(` ${chalk.dim(`Fix: ${info.fix}`)}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
console.log(` Filters ${chalk.green("OK")} ${chalk.dim("drawtext, subtitles, afftdn")}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Optional tools
|
|
244
|
+
if (results.system.optionalTools) {
|
|
245
|
+
for (const [name, info] of Object.entries(results.system.optionalTools)) {
|
|
246
|
+
if (info.installed) {
|
|
247
|
+
console.log(` ${name.padEnd(11)}${chalk.green("OK")} ${chalk.dim(info.commands.join(", "))}`);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
console.log(` ${name.padEnd(11)}${chalk.yellow("MISSING")} ${chalk.dim(`needed by: ${info.commands.join(", ")}`)}`);
|
|
251
|
+
console.log(` ${chalk.dim(`Install: ${info.install}`)}`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
151
255
|
// Config
|
|
152
256
|
if (results.system.config.ok) {
|
|
153
257
|
console.log(` Config ${chalk.green("OK")} ${chalk.dim(results.system.config.path)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,sDAAsD;AACtD,MAAM,eAAe,GAA6B;IAChD,cAAc,EAAE;QACd,gBAAgB;QAChB,uBAAuB;QACvB,YAAY;QACZ,eAAe;QACf,eAAe;QACf,gBAAgB;KACjB;IACD,cAAc,EAAE;QACd,iBAAiB;QACjB,0BAA0B;QAC1B,sBAAsB;QACtB,kBAAkB;QAClB,cAAc;QACd,eAAe;KAChB;IACD,iBAAiB,EAAE;QACjB,iBAAiB;QACjB,qBAAqB;QACrB,iBAAiB;QACjB,YAAY;QACZ,cAAc;QACd,iBAAiB;QACjB,0BAA0B;KAC3B;IACD,WAAW,EAAE;QACX,cAAc;QACd,wBAAwB;QACxB,gBAAgB;QAChB,oBAAoB;KACrB;IACD,kBAAkB,EAAE;QAClB,iBAAiB;QACjB,uBAAuB;QACvB,gBAAgB;QAChB,cAAc;QACd,mBAAmB;QACnB,WAAW;KACZ;IACD,aAAa,EAAE,CAAC,yBAAyB,CAAC;IAC1C,iBAAiB,EAAE,CAAC,0BAA0B,CAAC;IAC/C,mBAAmB,EAAE,CAAC,6BAA6B,CAAC;IACpD,aAAa,EAAE,CAAC,0CAA0C,CAAC;CAC5D,CAAC;AAEF,kDAAkD;AAClD,MAAM,aAAa,GAAG;IACpB,kBAAkB;IAClB,mBAAmB;IACnB,WAAW;IACX,mBAAmB;IACnB,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,QAAQ;IACR,qBAAqB;IACrB,gBAAgB;IAChB,qBAAqB;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,WAAW,CACV,OAAO,EACP;;;;CAIH,CACE;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IAEvC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,WAAW,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,4 +22,43 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import { Command } from "commander";
|
|
24
24
|
export declare const generateCommand: Command;
|
|
25
|
+
export interface ExecuteSpeechOptions {
|
|
26
|
+
text: string;
|
|
27
|
+
output?: string;
|
|
28
|
+
voice?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface ExecuteSpeechResult {
|
|
31
|
+
success: boolean;
|
|
32
|
+
outputPath?: string;
|
|
33
|
+
characterCount?: number;
|
|
34
|
+
error?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function executeSpeech(options: ExecuteSpeechOptions): Promise<ExecuteSpeechResult>;
|
|
37
|
+
export interface ExecuteSoundEffectOptions {
|
|
38
|
+
prompt: string;
|
|
39
|
+
output?: string;
|
|
40
|
+
duration?: number;
|
|
41
|
+
promptInfluence?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ExecuteSoundEffectResult {
|
|
44
|
+
success: boolean;
|
|
45
|
+
outputPath?: string;
|
|
46
|
+
error?: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function executeSoundEffect(options: ExecuteSoundEffectOptions): Promise<ExecuteSoundEffectResult>;
|
|
49
|
+
export interface ExecuteMusicOptions {
|
|
50
|
+
prompt: string;
|
|
51
|
+
output?: string;
|
|
52
|
+
duration?: number;
|
|
53
|
+
provider?: "elevenlabs" | "replicate";
|
|
54
|
+
instrumental?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface ExecuteMusicResult {
|
|
57
|
+
success: boolean;
|
|
58
|
+
outputPath?: string;
|
|
59
|
+
provider?: string;
|
|
60
|
+
duration?: number;
|
|
61
|
+
error?: string;
|
|
62
|
+
}
|
|
63
|
+
export declare function executeMusic(options: ExecuteMusicOptions): Promise<ExecuteMusicResult>;
|
|
25
64
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,eAAO,MAAM,eAAe,SA8BzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,eAAO,MAAM,eAAe,SA8BzB,CAAC;AAwgEJ,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyB/F;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA0B9G;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6D5F"}
|
|
@@ -1893,4 +1893,103 @@ generateCommand
|
|
|
1893
1893
|
exitWithError(apiError(`Video extension failed: ${msg}`, true));
|
|
1894
1894
|
}
|
|
1895
1895
|
});
|
|
1896
|
+
export async function executeSpeech(options) {
|
|
1897
|
+
try {
|
|
1898
|
+
const apiKey = hasApiKey("ELEVENLABS_API_KEY")
|
|
1899
|
+
? (await getApiKeyFromConfig("elevenlabs") || process.env.ELEVENLABS_API_KEY)
|
|
1900
|
+
: null;
|
|
1901
|
+
if (!apiKey)
|
|
1902
|
+
return { success: false, error: "ElevenLabs API key required. Set ELEVENLABS_API_KEY or run: vibe setup" };
|
|
1903
|
+
const elevenlabs = new ElevenLabsProvider();
|
|
1904
|
+
await elevenlabs.initialize({ apiKey });
|
|
1905
|
+
const result = await elevenlabs.textToSpeech(options.text, {
|
|
1906
|
+
voiceId: options.voice || "21m00Tcm4TlvDq8ikWAM",
|
|
1907
|
+
});
|
|
1908
|
+
if (!result.success || !result.audioBuffer) {
|
|
1909
|
+
return { success: false, error: result.error || "TTS generation failed" };
|
|
1910
|
+
}
|
|
1911
|
+
const outputPath = resolve(process.cwd(), options.output || "output.mp3");
|
|
1912
|
+
await writeFile(outputPath, result.audioBuffer);
|
|
1913
|
+
return { success: true, outputPath, characterCount: result.characterCount };
|
|
1914
|
+
}
|
|
1915
|
+
catch (error) {
|
|
1916
|
+
return { success: false, error: `TTS failed: ${error instanceof Error ? error.message : String(error)}` };
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
export async function executeSoundEffect(options) {
|
|
1920
|
+
try {
|
|
1921
|
+
const apiKey = hasApiKey("ELEVENLABS_API_KEY")
|
|
1922
|
+
? (await getApiKeyFromConfig("elevenlabs") || process.env.ELEVENLABS_API_KEY)
|
|
1923
|
+
: null;
|
|
1924
|
+
if (!apiKey)
|
|
1925
|
+
return { success: false, error: "ElevenLabs API key required. Set ELEVENLABS_API_KEY or run: vibe setup" };
|
|
1926
|
+
const elevenlabs = new ElevenLabsProvider();
|
|
1927
|
+
await elevenlabs.initialize({ apiKey });
|
|
1928
|
+
const result = await elevenlabs.generateSoundEffect(options.prompt, {
|
|
1929
|
+
duration: options.duration,
|
|
1930
|
+
promptInfluence: options.promptInfluence,
|
|
1931
|
+
});
|
|
1932
|
+
if (!result.success || !result.audioBuffer) {
|
|
1933
|
+
return { success: false, error: result.error || "Sound effect generation failed" };
|
|
1934
|
+
}
|
|
1935
|
+
const outputPath = resolve(process.cwd(), options.output || "sound-effect.mp3");
|
|
1936
|
+
await writeFile(outputPath, result.audioBuffer);
|
|
1937
|
+
return { success: true, outputPath };
|
|
1938
|
+
}
|
|
1939
|
+
catch (error) {
|
|
1940
|
+
return { success: false, error: `SFX failed: ${error instanceof Error ? error.message : String(error)}` };
|
|
1941
|
+
}
|
|
1942
|
+
}
|
|
1943
|
+
export async function executeMusic(options) {
|
|
1944
|
+
try {
|
|
1945
|
+
const provider = options.provider || "elevenlabs";
|
|
1946
|
+
if (provider === "elevenlabs") {
|
|
1947
|
+
const apiKey = hasApiKey("ELEVENLABS_API_KEY")
|
|
1948
|
+
? (await getApiKeyFromConfig("elevenlabs") || process.env.ELEVENLABS_API_KEY)
|
|
1949
|
+
: null;
|
|
1950
|
+
if (!apiKey)
|
|
1951
|
+
return { success: false, error: "ElevenLabs API key required. Set ELEVENLABS_API_KEY or run: vibe setup" };
|
|
1952
|
+
const elevenlabs = new ElevenLabsProvider();
|
|
1953
|
+
await elevenlabs.initialize({ apiKey });
|
|
1954
|
+
const duration = Math.max(3, Math.min(600, options.duration || 8));
|
|
1955
|
+
const result = await elevenlabs.generateMusic(options.prompt, {
|
|
1956
|
+
duration,
|
|
1957
|
+
forceInstrumental: options.instrumental || false,
|
|
1958
|
+
});
|
|
1959
|
+
if (!result.success || !result.audioBuffer) {
|
|
1960
|
+
return { success: false, error: result.error || "Music generation failed" };
|
|
1961
|
+
}
|
|
1962
|
+
const outputPath = resolve(process.cwd(), options.output || "music.mp3");
|
|
1963
|
+
await writeFile(outputPath, result.audioBuffer);
|
|
1964
|
+
return { success: true, outputPath, provider: "elevenlabs", duration };
|
|
1965
|
+
}
|
|
1966
|
+
// Replicate MusicGen
|
|
1967
|
+
const apiKey = hasApiKey("REPLICATE_API_TOKEN")
|
|
1968
|
+
? (await getApiKeyFromConfig("replicate") || process.env.REPLICATE_API_TOKEN)
|
|
1969
|
+
: null;
|
|
1970
|
+
if (!apiKey)
|
|
1971
|
+
return { success: false, error: "Replicate API token required. Set REPLICATE_API_TOKEN or run: vibe setup" };
|
|
1972
|
+
const replicate = new ReplicateProvider();
|
|
1973
|
+
await replicate.initialize({ apiKey });
|
|
1974
|
+
const duration = Math.max(1, Math.min(30, options.duration || 8));
|
|
1975
|
+
const result = await replicate.generateMusic(options.prompt, { duration });
|
|
1976
|
+
if (!result.success || !result.taskId) {
|
|
1977
|
+
return { success: false, error: result.error || "Music generation failed" };
|
|
1978
|
+
}
|
|
1979
|
+
const finalResult = await replicate.waitForMusic(result.taskId);
|
|
1980
|
+
if (!finalResult.success || !finalResult.audioUrl) {
|
|
1981
|
+
return { success: false, error: finalResult.error || "Music generation failed" };
|
|
1982
|
+
}
|
|
1983
|
+
const response = await fetch(finalResult.audioUrl);
|
|
1984
|
+
if (!response.ok)
|
|
1985
|
+
return { success: false, error: "Failed to download generated audio" };
|
|
1986
|
+
const audioBuffer = Buffer.from(await response.arrayBuffer());
|
|
1987
|
+
const outputPath = resolve(process.cwd(), options.output || "music.mp3");
|
|
1988
|
+
await writeFile(outputPath, audioBuffer);
|
|
1989
|
+
return { success: true, outputPath, provider: "replicate", duration };
|
|
1990
|
+
}
|
|
1991
|
+
catch (error) {
|
|
1992
|
+
return { success: false, error: `Music failed: ${error instanceof Error ? error.message : String(error)}` };
|
|
1993
|
+
}
|
|
1994
|
+
}
|
|
1896
1995
|
//# sourceMappingURL=generate.js.map
|