@vibeframe/mcp-server 0.67.0 → 0.68.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/index.js +366 -57
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -13874,6 +13874,197 @@ var init_interface = __esm({
|
|
|
13874
13874
|
}
|
|
13875
13875
|
});
|
|
13876
13876
|
|
|
13877
|
+
// ../ai-providers/dist/define-provider.js
|
|
13878
|
+
function defineApiKey(meta) {
|
|
13879
|
+
if (apiKeyRegistry.has(meta.configKey)) {
|
|
13880
|
+
throw new Error(`defineApiKey: duplicate configKey "${meta.configKey}". Each API key must be declared once.`);
|
|
13881
|
+
}
|
|
13882
|
+
apiKeyRegistry.set(meta.configKey, meta);
|
|
13883
|
+
}
|
|
13884
|
+
function defineProvider(meta) {
|
|
13885
|
+
if (providerRegistry2.has(meta.id)) {
|
|
13886
|
+
throw new Error(`defineProvider: duplicate id "${meta.id}". Each provider must be declared once.`);
|
|
13887
|
+
}
|
|
13888
|
+
if (meta.apiKey !== null && !apiKeyRegistry.has(meta.apiKey)) {
|
|
13889
|
+
throw new Error(`defineProvider: provider "${meta.id}" references apiKey "${meta.apiKey}" but no defineApiKey call has registered it. Order issue? api-keys.ts must be imported before provider modules.`);
|
|
13890
|
+
}
|
|
13891
|
+
providerRegistry2.set(meta.id, meta);
|
|
13892
|
+
}
|
|
13893
|
+
function getProvidersFor(kind) {
|
|
13894
|
+
return [...providerRegistry2.values()].filter((p) => p.kinds.includes(kind)).sort((a, b) => (a.resolverPriority?.[kind] ?? 999) - (b.resolverPriority?.[kind] ?? 999)).map((p) => ({
|
|
13895
|
+
name: p.id,
|
|
13896
|
+
envVar: p.apiKey ? apiKeyRegistry.get(p.apiKey)?.envVar ?? null : null,
|
|
13897
|
+
label: p.label
|
|
13898
|
+
}));
|
|
13899
|
+
}
|
|
13900
|
+
function getProviderEnvVars() {
|
|
13901
|
+
return Object.fromEntries([...apiKeyRegistry.values()].map((k) => [k.configKey, k.envVar]));
|
|
13902
|
+
}
|
|
13903
|
+
function getCommandKeyMap() {
|
|
13904
|
+
const map3 = {};
|
|
13905
|
+
for (const p of providerRegistry2.values()) {
|
|
13906
|
+
if (!p.apiKey)
|
|
13907
|
+
continue;
|
|
13908
|
+
if (!p.commandsUnlocked || p.commandsUnlocked.length === 0)
|
|
13909
|
+
continue;
|
|
13910
|
+
const envVar = apiKeyRegistry.get(p.apiKey)?.envVar;
|
|
13911
|
+
if (!envVar)
|
|
13912
|
+
continue;
|
|
13913
|
+
if (!map3[envVar])
|
|
13914
|
+
map3[envVar] = [];
|
|
13915
|
+
map3[envVar].push(...p.commandsUnlocked);
|
|
13916
|
+
}
|
|
13917
|
+
for (const k of apiKeyRegistry.values()) {
|
|
13918
|
+
if (!k.commandsUnlocked || k.commandsUnlocked.length === 0)
|
|
13919
|
+
continue;
|
|
13920
|
+
if (!map3[k.envVar])
|
|
13921
|
+
map3[k.envVar] = [];
|
|
13922
|
+
map3[k.envVar].push(...k.commandsUnlocked);
|
|
13923
|
+
}
|
|
13924
|
+
return map3;
|
|
13925
|
+
}
|
|
13926
|
+
function getSetupProviders() {
|
|
13927
|
+
return [...apiKeyRegistry.values()].filter((k) => k.showInSetup).map((k) => ({
|
|
13928
|
+
key: k.configKey,
|
|
13929
|
+
name: k.label,
|
|
13930
|
+
env: k.envVar,
|
|
13931
|
+
desc: k.setupDescription ?? ""
|
|
13932
|
+
}));
|
|
13933
|
+
}
|
|
13934
|
+
function getAllApiKeys() {
|
|
13935
|
+
return [...apiKeyRegistry.values()];
|
|
13936
|
+
}
|
|
13937
|
+
function getAllProviders() {
|
|
13938
|
+
return [...providerRegistry2.values()];
|
|
13939
|
+
}
|
|
13940
|
+
var apiKeyRegistry, providerRegistry2;
|
|
13941
|
+
var init_define_provider = __esm({
|
|
13942
|
+
"../ai-providers/dist/define-provider.js"() {
|
|
13943
|
+
"use strict";
|
|
13944
|
+
apiKeyRegistry = /* @__PURE__ */ new Map();
|
|
13945
|
+
providerRegistry2 = /* @__PURE__ */ new Map();
|
|
13946
|
+
}
|
|
13947
|
+
});
|
|
13948
|
+
|
|
13949
|
+
// ../ai-providers/dist/api-keys.js
|
|
13950
|
+
var init_api_keys = __esm({
|
|
13951
|
+
"../ai-providers/dist/api-keys.js"() {
|
|
13952
|
+
"use strict";
|
|
13953
|
+
init_define_provider();
|
|
13954
|
+
defineApiKey({
|
|
13955
|
+
configKey: "openai",
|
|
13956
|
+
envVar: "OPENAI_API_KEY",
|
|
13957
|
+
label: "OpenAI",
|
|
13958
|
+
showInSetup: true,
|
|
13959
|
+
setupDescription: "gpt-image-2 image gen ($, default since v0.56), Whisper transcribe, Agent",
|
|
13960
|
+
envExampleComment: "OpenAI API Key (Whisper transcription, gpt-image-2 \u2014 default text-to-image since v0.56)",
|
|
13961
|
+
envExampleUrl: "https://platform.openai.com/api-keys"
|
|
13962
|
+
});
|
|
13963
|
+
defineApiKey({
|
|
13964
|
+
configKey: "google",
|
|
13965
|
+
envVar: "GOOGLE_API_KEY",
|
|
13966
|
+
label: "Google",
|
|
13967
|
+
showInSetup: true,
|
|
13968
|
+
setupDescription: "Gemini \u2014 image gen (free tier), video analysis ($), Veo ($$)",
|
|
13969
|
+
envExampleComment: "Google API Key (Gemini auto-edit suggestions, image gen, Veo video)",
|
|
13970
|
+
envExampleUrl: "https://aistudio.google.com/apikey"
|
|
13971
|
+
});
|
|
13972
|
+
defineApiKey({
|
|
13973
|
+
configKey: "anthropic",
|
|
13974
|
+
envVar: "ANTHROPIC_API_KEY",
|
|
13975
|
+
label: "Anthropic",
|
|
13976
|
+
showInSetup: true,
|
|
13977
|
+
setupDescription: "Claude \u2014 storyboard, color grade, reframe, Agent ($)",
|
|
13978
|
+
envExampleComment: "Anthropic API Key (Claude motion graphics & storyboarding)",
|
|
13979
|
+
envExampleUrl: "https://console.anthropic.com/"
|
|
13980
|
+
});
|
|
13981
|
+
defineApiKey({
|
|
13982
|
+
configKey: "elevenlabs",
|
|
13983
|
+
envVar: "ELEVENLABS_API_KEY",
|
|
13984
|
+
label: "ElevenLabs",
|
|
13985
|
+
showInSetup: true,
|
|
13986
|
+
setupDescription: "TTS ($), SFX, music, voice clone, dubbing \u2014 skip to use local Kokoro",
|
|
13987
|
+
envExampleComment: "ElevenLabs API Key (text-to-speech \u2014 Kokoro local fallback runs when this is unset, since v0.54)",
|
|
13988
|
+
envExampleUrl: "https://elevenlabs.io/api"
|
|
13989
|
+
});
|
|
13990
|
+
defineApiKey({
|
|
13991
|
+
configKey: "fal",
|
|
13992
|
+
envVar: "FAL_KEY",
|
|
13993
|
+
label: "fal.ai",
|
|
13994
|
+
showInSetup: true,
|
|
13995
|
+
setupDescription: "Seedance 2.0 video gen ($$, default since v0.57)",
|
|
13996
|
+
envExampleComment: "fal.ai API Key (Seedance 2.0 video \u2014 default text/image-to-video since v0.57, Artificial Analysis ELO #2)",
|
|
13997
|
+
envExampleUrl: "https://fal.ai/dashboard/keys"
|
|
13998
|
+
});
|
|
13999
|
+
defineApiKey({
|
|
14000
|
+
configKey: "xai",
|
|
14001
|
+
envVar: "XAI_API_KEY",
|
|
14002
|
+
label: "xAI",
|
|
14003
|
+
showInSetup: true,
|
|
14004
|
+
setupDescription: "Grok \u2014 video gen with audio ($$), image ($), Agent",
|
|
14005
|
+
envExampleComment: "xAI API Key (Grok video generation \u2014 fallback when no FAL_KEY)",
|
|
14006
|
+
envExampleUrl: "https://console.x.ai/"
|
|
14007
|
+
});
|
|
14008
|
+
defineApiKey({
|
|
14009
|
+
configKey: "runway",
|
|
14010
|
+
envVar: "RUNWAY_API_SECRET",
|
|
14011
|
+
label: "Runway",
|
|
14012
|
+
showInSetup: true,
|
|
14013
|
+
setupDescription: "Gen-4.5 video generation ($$)",
|
|
14014
|
+
envExampleComment: "Runway API Secret (Runway Gen-4.5 video generation)",
|
|
14015
|
+
envExampleUrl: "https://app.runwayml.com/settings/api-keys"
|
|
14016
|
+
});
|
|
14017
|
+
defineApiKey({
|
|
14018
|
+
configKey: "kling",
|
|
14019
|
+
envVar: "KLING_API_KEY",
|
|
14020
|
+
label: "Kling",
|
|
14021
|
+
showInSetup: true,
|
|
14022
|
+
setupDescription: "v2.5/v3 video \u2014 std ($$) and pro ($$$) modes",
|
|
14023
|
+
envExampleComment: "Kling API Key (Kling video generation)",
|
|
14024
|
+
envExampleUrl: "https://platform.klingai.com/",
|
|
14025
|
+
envExampleExtraLines: ["Format: ACCESS_KEY:SECRET_KEY"]
|
|
14026
|
+
});
|
|
14027
|
+
defineApiKey({
|
|
14028
|
+
configKey: "replicate",
|
|
14029
|
+
envVar: "REPLICATE_API_TOKEN",
|
|
14030
|
+
label: "Replicate",
|
|
14031
|
+
showInSetup: true,
|
|
14032
|
+
setupDescription: "MusicGen background music ($, max 30s)",
|
|
14033
|
+
envExampleComment: "Replicate API Token (music generation, video upscale, audio restoration)",
|
|
14034
|
+
envExampleUrl: "https://replicate.com/account/api-tokens"
|
|
14035
|
+
});
|
|
14036
|
+
defineApiKey({
|
|
14037
|
+
configKey: "openrouter",
|
|
14038
|
+
envVar: "OPENROUTER_API_KEY",
|
|
14039
|
+
label: "OpenRouter",
|
|
14040
|
+
showInSetup: true,
|
|
14041
|
+
setupDescription: "300+ models via one key \u2014 Agent only (pay per model)",
|
|
14042
|
+
envExampleComment: "OpenRouter API Key (300+ AI models via unified API, used by `vibe agent`)",
|
|
14043
|
+
envExampleUrl: "https://openrouter.ai/keys"
|
|
14044
|
+
});
|
|
14045
|
+
defineApiKey({
|
|
14046
|
+
configKey: "imgbb",
|
|
14047
|
+
envVar: "IMGBB_API_KEY",
|
|
14048
|
+
label: "ImgBB",
|
|
14049
|
+
showInSetup: false,
|
|
14050
|
+
// not prompted in setup wizard — internal upload host
|
|
14051
|
+
envExampleComment: "ImgBB API Key (image hosting \u2014 used by Kling and fal.ai for image-to-video uploads)",
|
|
14052
|
+
envExampleUrl: "https://api.imgbb.com/",
|
|
14053
|
+
// ImgBB has no provider class (envvar-only); doctor still shows what it
|
|
14054
|
+
// unlocks at the apiKey level.
|
|
14055
|
+
commandsUnlocked: [
|
|
14056
|
+
"generate video -p kling/fal (image-to-video upload host)"
|
|
14057
|
+
]
|
|
14058
|
+
});
|
|
14059
|
+
defineProvider({
|
|
14060
|
+
id: "openrouter",
|
|
14061
|
+
label: "OpenRouter",
|
|
14062
|
+
apiKey: "openrouter",
|
|
14063
|
+
kinds: ["llm"]
|
|
14064
|
+
});
|
|
14065
|
+
}
|
|
14066
|
+
});
|
|
14067
|
+
|
|
13877
14068
|
// ../ai-providers/dist/whisper/WhisperProvider.js
|
|
13878
14069
|
var WhisperProvider, whisperProvider;
|
|
13879
14070
|
var init_WhisperProvider = __esm({
|
|
@@ -15350,6 +15541,29 @@ var init_gemini = __esm({
|
|
|
15350
15541
|
"use strict";
|
|
15351
15542
|
init_GeminiProvider();
|
|
15352
15543
|
init_gemini_motion();
|
|
15544
|
+
init_define_provider();
|
|
15545
|
+
defineProvider({
|
|
15546
|
+
id: "gemini",
|
|
15547
|
+
label: "Gemini",
|
|
15548
|
+
apiKey: "google",
|
|
15549
|
+
kinds: ["image", "llm"],
|
|
15550
|
+
resolverPriority: { image: 2 },
|
|
15551
|
+
commandsUnlocked: [
|
|
15552
|
+
"generate image",
|
|
15553
|
+
"edit image",
|
|
15554
|
+
"analyze media",
|
|
15555
|
+
"analyze video",
|
|
15556
|
+
"analyze review"
|
|
15557
|
+
]
|
|
15558
|
+
});
|
|
15559
|
+
defineProvider({
|
|
15560
|
+
id: "veo",
|
|
15561
|
+
label: "Veo",
|
|
15562
|
+
apiKey: "google",
|
|
15563
|
+
kinds: ["video"],
|
|
15564
|
+
resolverPriority: { video: 3 },
|
|
15565
|
+
commandsUnlocked: ["generate video -p veo"]
|
|
15566
|
+
});
|
|
15353
15567
|
}
|
|
15354
15568
|
});
|
|
15355
15569
|
|
|
@@ -15788,6 +16002,22 @@ var init_openai = __esm({
|
|
|
15788
16002
|
"../ai-providers/dist/openai/index.js"() {
|
|
15789
16003
|
"use strict";
|
|
15790
16004
|
init_OpenAIProvider();
|
|
16005
|
+
init_define_provider();
|
|
16006
|
+
defineProvider({
|
|
16007
|
+
id: "openai",
|
|
16008
|
+
label: "OpenAI",
|
|
16009
|
+
apiKey: "openai",
|
|
16010
|
+
kinds: ["llm", "image", "transcription"],
|
|
16011
|
+
resolverPriority: { image: 1 },
|
|
16012
|
+
commandsUnlocked: [
|
|
16013
|
+
"agent -p openai",
|
|
16014
|
+
"generate image -p openai",
|
|
16015
|
+
"edit image -p openai",
|
|
16016
|
+
"audio transcribe",
|
|
16017
|
+
"edit caption",
|
|
16018
|
+
"edit jump-cut"
|
|
16019
|
+
]
|
|
16020
|
+
});
|
|
15791
16021
|
}
|
|
15792
16022
|
});
|
|
15793
16023
|
|
|
@@ -17429,6 +17659,22 @@ var init_claude = __esm({
|
|
|
17429
17659
|
"../ai-providers/dist/claude/index.js"() {
|
|
17430
17660
|
"use strict";
|
|
17431
17661
|
init_ClaudeProvider();
|
|
17662
|
+
init_define_provider();
|
|
17663
|
+
defineProvider({
|
|
17664
|
+
id: "claude",
|
|
17665
|
+
label: "Claude (Anthropic)",
|
|
17666
|
+
apiKey: "anthropic",
|
|
17667
|
+
kinds: ["llm"],
|
|
17668
|
+
commandsUnlocked: [
|
|
17669
|
+
"agent -p claude",
|
|
17670
|
+
"generate storyboard",
|
|
17671
|
+
"generate motion",
|
|
17672
|
+
"edit grade",
|
|
17673
|
+
"edit reframe",
|
|
17674
|
+
"edit speed-ramp",
|
|
17675
|
+
"pipeline script-to-video"
|
|
17676
|
+
]
|
|
17677
|
+
});
|
|
17432
17678
|
}
|
|
17433
17679
|
});
|
|
17434
17680
|
|
|
@@ -17715,6 +17961,13 @@ var init_ollama = __esm({
|
|
|
17715
17961
|
"../ai-providers/dist/ollama/index.js"() {
|
|
17716
17962
|
"use strict";
|
|
17717
17963
|
init_OllamaProvider();
|
|
17964
|
+
init_define_provider();
|
|
17965
|
+
defineProvider({
|
|
17966
|
+
id: "ollama",
|
|
17967
|
+
label: "Ollama (Local)",
|
|
17968
|
+
apiKey: null,
|
|
17969
|
+
kinds: ["llm"]
|
|
17970
|
+
});
|
|
17718
17971
|
}
|
|
17719
17972
|
});
|
|
17720
17973
|
|
|
@@ -18148,6 +18401,22 @@ var init_elevenlabs = __esm({
|
|
|
18148
18401
|
"../ai-providers/dist/elevenlabs/index.js"() {
|
|
18149
18402
|
"use strict";
|
|
18150
18403
|
init_ElevenLabsProvider();
|
|
18404
|
+
init_define_provider();
|
|
18405
|
+
defineProvider({
|
|
18406
|
+
id: "elevenlabs",
|
|
18407
|
+
label: "ElevenLabs",
|
|
18408
|
+
apiKey: "elevenlabs",
|
|
18409
|
+
kinds: ["speech", "music"],
|
|
18410
|
+
resolverPriority: { speech: 1 },
|
|
18411
|
+
commandsUnlocked: [
|
|
18412
|
+
"generate speech",
|
|
18413
|
+
"generate sound-effect",
|
|
18414
|
+
"generate music",
|
|
18415
|
+
"audio voices",
|
|
18416
|
+
"audio voice-clone",
|
|
18417
|
+
"audio dub"
|
|
18418
|
+
]
|
|
18419
|
+
});
|
|
18151
18420
|
}
|
|
18152
18421
|
});
|
|
18153
18422
|
|
|
@@ -18243,6 +18512,14 @@ var init_kokoro = __esm({
|
|
|
18243
18512
|
"../ai-providers/dist/kokoro/index.js"() {
|
|
18244
18513
|
"use strict";
|
|
18245
18514
|
init_KokoroProvider();
|
|
18515
|
+
init_define_provider();
|
|
18516
|
+
defineProvider({
|
|
18517
|
+
id: "kokoro",
|
|
18518
|
+
label: "Kokoro (local)",
|
|
18519
|
+
apiKey: null,
|
|
18520
|
+
kinds: ["speech"],
|
|
18521
|
+
resolverPriority: { speech: 2 }
|
|
18522
|
+
});
|
|
18246
18523
|
}
|
|
18247
18524
|
});
|
|
18248
18525
|
|
|
@@ -18809,6 +19086,15 @@ var init_runway = __esm({
|
|
|
18809
19086
|
"../ai-providers/dist/runway/index.js"() {
|
|
18810
19087
|
"use strict";
|
|
18811
19088
|
init_RunwayProvider();
|
|
19089
|
+
init_define_provider();
|
|
19090
|
+
defineProvider({
|
|
19091
|
+
id: "runway",
|
|
19092
|
+
label: "Runway",
|
|
19093
|
+
apiKey: "runway",
|
|
19094
|
+
kinds: ["video"],
|
|
19095
|
+
resolverPriority: { video: 5 },
|
|
19096
|
+
commandsUnlocked: ["generate video -p runway"]
|
|
19097
|
+
});
|
|
18812
19098
|
}
|
|
18813
19099
|
});
|
|
18814
19100
|
|
|
@@ -19239,6 +19525,15 @@ var init_kling = __esm({
|
|
|
19239
19525
|
"../ai-providers/dist/kling/index.js"() {
|
|
19240
19526
|
"use strict";
|
|
19241
19527
|
init_KlingProvider();
|
|
19528
|
+
init_define_provider();
|
|
19529
|
+
defineProvider({
|
|
19530
|
+
id: "kling",
|
|
19531
|
+
label: "Kling",
|
|
19532
|
+
apiKey: "kling",
|
|
19533
|
+
kinds: ["video"],
|
|
19534
|
+
resolverPriority: { video: 4 },
|
|
19535
|
+
commandsUnlocked: ["generate video -p kling"]
|
|
19536
|
+
});
|
|
19242
19537
|
}
|
|
19243
19538
|
});
|
|
19244
19539
|
|
|
@@ -19548,6 +19843,20 @@ var init_grok = __esm({
|
|
|
19548
19843
|
"../ai-providers/dist/grok/index.js"() {
|
|
19549
19844
|
"use strict";
|
|
19550
19845
|
init_GrokProvider();
|
|
19846
|
+
init_define_provider();
|
|
19847
|
+
defineProvider({
|
|
19848
|
+
id: "grok",
|
|
19849
|
+
label: "Grok",
|
|
19850
|
+
apiKey: "xai",
|
|
19851
|
+
kinds: ["image", "video", "llm"],
|
|
19852
|
+
resolverPriority: { image: 3, video: 2 },
|
|
19853
|
+
commandsUnlocked: [
|
|
19854
|
+
"agent -p xai",
|
|
19855
|
+
"generate image -p grok",
|
|
19856
|
+
"generate video -p grok",
|
|
19857
|
+
"edit image -p grok"
|
|
19858
|
+
]
|
|
19859
|
+
});
|
|
19551
19860
|
}
|
|
19552
19861
|
});
|
|
19553
19862
|
|
|
@@ -23810,6 +24119,19 @@ var init_fal = __esm({
|
|
|
23810
24119
|
"../ai-providers/dist/fal/index.js"() {
|
|
23811
24120
|
"use strict";
|
|
23812
24121
|
init_FalProvider();
|
|
24122
|
+
init_define_provider();
|
|
24123
|
+
defineProvider({
|
|
24124
|
+
id: "fal",
|
|
24125
|
+
label: "fal.ai (Seedance 2.0)",
|
|
24126
|
+
apiKey: "fal",
|
|
24127
|
+
kinds: ["video"],
|
|
24128
|
+
resolverPriority: { video: 1 },
|
|
24129
|
+
commandsUnlocked: [
|
|
24130
|
+
"generate video -p fal (Seedance 2.0 \u2014 default since v0.57)",
|
|
24131
|
+
"generate video -p fal -m fast (lower-latency variant)",
|
|
24132
|
+
"generate video -p fal -i <image> (image-to-video)"
|
|
24133
|
+
]
|
|
24134
|
+
});
|
|
23813
24135
|
}
|
|
23814
24136
|
});
|
|
23815
24137
|
|
|
@@ -24459,6 +24781,14 @@ var init_replicate = __esm({
|
|
|
24459
24781
|
"../ai-providers/dist/replicate/index.js"() {
|
|
24460
24782
|
"use strict";
|
|
24461
24783
|
init_ReplicateProvider();
|
|
24784
|
+
init_define_provider();
|
|
24785
|
+
defineProvider({
|
|
24786
|
+
id: "replicate",
|
|
24787
|
+
label: "Replicate",
|
|
24788
|
+
apiKey: "replicate",
|
|
24789
|
+
kinds: ["music"],
|
|
24790
|
+
commandsUnlocked: ["generate music -p replicate"]
|
|
24791
|
+
});
|
|
24462
24792
|
}
|
|
24463
24793
|
});
|
|
24464
24794
|
|
|
@@ -24482,10 +24812,18 @@ __export(dist_exports, {
|
|
|
24482
24812
|
RunwayProvider: () => RunwayProvider,
|
|
24483
24813
|
WhisperProvider: () => WhisperProvider,
|
|
24484
24814
|
claudeProvider: () => claudeProvider,
|
|
24815
|
+
defineApiKey: () => defineApiKey,
|
|
24816
|
+
defineProvider: () => defineProvider,
|
|
24485
24817
|
elevenLabsProvider: () => elevenLabsProvider,
|
|
24486
24818
|
falProvider: () => falProvider,
|
|
24487
24819
|
geminiProvider: () => geminiProvider,
|
|
24820
|
+
getAllApiKeys: () => getAllApiKeys,
|
|
24821
|
+
getAllProviders: () => getAllProviders,
|
|
24488
24822
|
getBestProviderForCapability: () => getBestProviderForCapability,
|
|
24823
|
+
getCommandKeyMap: () => getCommandKeyMap,
|
|
24824
|
+
getProviderEnvVars: () => getProviderEnvVars,
|
|
24825
|
+
getProvidersFor: () => getProvidersFor,
|
|
24826
|
+
getSetupProviders: () => getSetupProviders,
|
|
24489
24827
|
grokProvider: () => grokProvider,
|
|
24490
24828
|
klingProvider: () => klingProvider,
|
|
24491
24829
|
kokoroProvider: () => kokoroProvider,
|
|
@@ -24503,6 +24841,8 @@ var init_dist = __esm({
|
|
|
24503
24841
|
"use strict";
|
|
24504
24842
|
init_interface();
|
|
24505
24843
|
init_registry();
|
|
24844
|
+
init_api_keys();
|
|
24845
|
+
init_define_provider();
|
|
24506
24846
|
init_whisper();
|
|
24507
24847
|
init_gemini();
|
|
24508
24848
|
init_openai();
|
|
@@ -24937,19 +25277,8 @@ var PROVIDER_ENV_VARS;
|
|
|
24937
25277
|
var init_schema = __esm({
|
|
24938
25278
|
"../cli/src/config/schema.ts"() {
|
|
24939
25279
|
"use strict";
|
|
24940
|
-
|
|
24941
|
-
|
|
24942
|
-
openai: "OPENAI_API_KEY",
|
|
24943
|
-
google: "GOOGLE_API_KEY",
|
|
24944
|
-
elevenlabs: "ELEVENLABS_API_KEY",
|
|
24945
|
-
runway: "RUNWAY_API_SECRET",
|
|
24946
|
-
kling: "KLING_API_KEY",
|
|
24947
|
-
fal: "FAL_KEY",
|
|
24948
|
-
imgbb: "IMGBB_API_KEY",
|
|
24949
|
-
replicate: "REPLICATE_API_TOKEN",
|
|
24950
|
-
xai: "XAI_API_KEY",
|
|
24951
|
-
openrouter: "OPENROUTER_API_KEY"
|
|
24952
|
-
};
|
|
25280
|
+
init_dist();
|
|
25281
|
+
PROVIDER_ENV_VARS = getProviderEnvVars();
|
|
24953
25282
|
}
|
|
24954
25283
|
});
|
|
24955
25284
|
|
|
@@ -458534,8 +458863,8 @@ var init_ai_script_pipeline = __esm({
|
|
|
458534
458863
|
|
|
458535
458864
|
// ../cli/src/utils/provider-resolver.ts
|
|
458536
458865
|
function resolveProvider(category) {
|
|
458537
|
-
const candidates =
|
|
458538
|
-
if (
|
|
458866
|
+
const candidates = getProvidersFor(category);
|
|
458867
|
+
if (candidates.length === 0) return null;
|
|
458539
458868
|
if (configDefaults?.[category]) {
|
|
458540
458869
|
const preferred = candidates.find((c) => c.name === configDefaults[category]);
|
|
458541
458870
|
if (preferred && (preferred.envVar === null || hasApiKey(preferred.envVar))) {
|
|
@@ -458549,32 +458878,12 @@ function resolveProvider(category) {
|
|
|
458549
458878
|
}
|
|
458550
458879
|
return null;
|
|
458551
458880
|
}
|
|
458552
|
-
var
|
|
458881
|
+
var configDefaults;
|
|
458553
458882
|
var init_provider_resolver = __esm({
|
|
458554
458883
|
"../cli/src/utils/provider-resolver.ts"() {
|
|
458555
458884
|
"use strict";
|
|
458885
|
+
init_dist();
|
|
458556
458886
|
init_api_key();
|
|
458557
|
-
IMAGE_PROVIDERS = [
|
|
458558
|
-
{ name: "openai", envVar: "OPENAI_API_KEY", label: "OpenAI" },
|
|
458559
|
-
{ name: "gemini", envVar: "GOOGLE_API_KEY", label: "Gemini" },
|
|
458560
|
-
{ name: "grok", envVar: "XAI_API_KEY", label: "Grok" }
|
|
458561
|
-
];
|
|
458562
|
-
VIDEO_PROVIDERS = [
|
|
458563
|
-
{ name: "fal", envVar: "FAL_KEY", label: "fal.ai (Seedance 2.0)" },
|
|
458564
|
-
{ name: "grok", envVar: "XAI_API_KEY", label: "Grok" },
|
|
458565
|
-
{ name: "veo", envVar: "GOOGLE_API_KEY", label: "Veo" },
|
|
458566
|
-
{ name: "kling", envVar: "KLING_API_KEY", label: "Kling" },
|
|
458567
|
-
{ name: "runway", envVar: "RUNWAY_API_SECRET", label: "Runway" }
|
|
458568
|
-
];
|
|
458569
|
-
SPEECH_PROVIDERS = [
|
|
458570
|
-
{ name: "elevenlabs", envVar: "ELEVENLABS_API_KEY", label: "ElevenLabs" },
|
|
458571
|
-
{ name: "kokoro", envVar: null, label: "Kokoro (local)" }
|
|
458572
|
-
];
|
|
458573
|
-
PROVIDER_MAP = {
|
|
458574
|
-
image: IMAGE_PROVIDERS,
|
|
458575
|
-
video: VIDEO_PROVIDERS,
|
|
458576
|
-
speech: SPEECH_PROVIDERS
|
|
458577
|
-
};
|
|
458578
458887
|
configDefaults = null;
|
|
458579
458888
|
}
|
|
458580
458889
|
});
|
|
@@ -458791,6 +459100,7 @@ var init_generate = __esm({
|
|
|
458791
459100
|
init_ai_helpers();
|
|
458792
459101
|
init_validate();
|
|
458793
459102
|
init_provider_resolver();
|
|
459103
|
+
init_dist();
|
|
458794
459104
|
init_ai_image();
|
|
458795
459105
|
init_ai_motion();
|
|
458796
459106
|
init_openai_image2();
|
|
@@ -458844,17 +459154,30 @@ Examples:
|
|
|
458844
459154
|
if (options.output) {
|
|
458845
459155
|
validateOutputPath(options.output);
|
|
458846
459156
|
}
|
|
458847
|
-
const
|
|
458848
|
-
const
|
|
458849
|
-
|
|
458850
|
-
|
|
458851
|
-
|
|
459157
|
+
const imageRegistry = getProvidersFor("image");
|
|
459158
|
+
const validProviders = [...imageRegistry.map((p) => p.name), "dalle", "runway"];
|
|
459159
|
+
const providerEnvMap = Object.fromEntries(
|
|
459160
|
+
imageRegistry.filter((p) => p.envVar !== null).map((p) => [p.name, p.envVar])
|
|
459161
|
+
);
|
|
459162
|
+
const envKeyMap = {
|
|
459163
|
+
...providerEnvMap,
|
|
459164
|
+
dalle: "OPENAI_API_KEY",
|
|
459165
|
+
runway: "RUNWAY_API_SECRET"
|
|
459166
|
+
};
|
|
459167
|
+
const providerNameMap = {
|
|
459168
|
+
...Object.fromEntries(imageRegistry.map((p) => [p.name, p.label])),
|
|
459169
|
+
// Override Gemini's resolver label "Gemini" with the more specific
|
|
459170
|
+
// "Google" used in error messages, and add aliases.
|
|
459171
|
+
gemini: "Google",
|
|
459172
|
+
grok: "xAI Grok",
|
|
459173
|
+
dalle: "OpenAI",
|
|
459174
|
+
runway: "Runway"
|
|
458852
459175
|
};
|
|
458853
459176
|
let provider;
|
|
458854
459177
|
if (options.provider) {
|
|
458855
459178
|
provider = options.provider.toLowerCase();
|
|
458856
459179
|
if (!validProviders.includes(provider)) {
|
|
458857
|
-
exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers:
|
|
459180
|
+
exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: ${imageRegistry.map((p) => p.name).join(", ")}, runway`));
|
|
458858
459181
|
}
|
|
458859
459182
|
if (providerEnvMap[provider] && !hasApiKey(providerEnvMap[provider]) && !options.apiKey) {
|
|
458860
459183
|
const resolved = resolveProvider("image");
|
|
@@ -458874,20 +459197,6 @@ Examples:
|
|
|
458874
459197
|
outputResult({ dryRun: true, command: "generate image", params: { prompt: prompt3, provider, model: options.model, ratio: options.ratio, size: options.size, quality: options.quality, count: options.count, output: options.output } });
|
|
458875
459198
|
return;
|
|
458876
459199
|
}
|
|
458877
|
-
const envKeyMap = {
|
|
458878
|
-
openai: "OPENAI_API_KEY",
|
|
458879
|
-
dalle: "OPENAI_API_KEY",
|
|
458880
|
-
gemini: "GOOGLE_API_KEY",
|
|
458881
|
-
grok: "XAI_API_KEY",
|
|
458882
|
-
runway: "RUNWAY_API_SECRET"
|
|
458883
|
-
};
|
|
458884
|
-
const providerNameMap = {
|
|
458885
|
-
openai: "OpenAI",
|
|
458886
|
-
dalle: "OpenAI",
|
|
458887
|
-
gemini: "Google",
|
|
458888
|
-
grok: "xAI Grok",
|
|
458889
|
-
runway: "Runway"
|
|
458890
|
-
};
|
|
458891
459200
|
const envKey = envKeyMap[provider];
|
|
458892
459201
|
const providerName = providerNameMap[provider];
|
|
458893
459202
|
const apiKey = await requireApiKey(envKey, providerName, options.apiKey);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.0",
|
|
4
4
|
"description": "VibeFrame MCP Server - AI-native video editing via Model Context Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"tsx": "^4.21.0",
|
|
58
58
|
"typescript": "^5.3.3",
|
|
59
59
|
"vitest": "^1.2.2",
|
|
60
|
-
"@vibeframe/cli": "0.
|
|
61
|
-
"@vibeframe/core": "0.
|
|
60
|
+
"@vibeframe/cli": "0.68.0",
|
|
61
|
+
"@vibeframe/core": "0.68.0"
|
|
62
62
|
},
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=20"
|