@vibeframe/mcp-server 0.113.6 → 0.113.8
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 +134 -3
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -291,6 +291,16 @@ var init_api_keys = __esm({
|
|
|
291
291
|
envExampleUrl: "https://openrouter.ai/keys",
|
|
292
292
|
keyFormat: { prefix: /^sk-or-/, example: "sk-or-..." }
|
|
293
293
|
});
|
|
294
|
+
defineApiKey({
|
|
295
|
+
configKey: "evolink",
|
|
296
|
+
envVar: "EVOLINK_API_KEY",
|
|
297
|
+
label: "Evolink",
|
|
298
|
+
showInSetup: true,
|
|
299
|
+
setupDescription: "GPT-5, Claude, Gemini, DeepSeek & more via one key \u2014 Agent only (pay per model)",
|
|
300
|
+
envExampleComment: "Evolink API Key (GPT-5, Claude, Gemini, DeepSeek & more via unified API, used by `vibe agent`)",
|
|
301
|
+
envExampleUrl: "https://evolink.ai/dashboard/keys",
|
|
302
|
+
keyFormat: { prefix: /^el-/, example: "el-..." }
|
|
303
|
+
});
|
|
294
304
|
defineApiKey({
|
|
295
305
|
configKey: "imgbb",
|
|
296
306
|
envVar: "IMGBB_API_KEY",
|
|
@@ -313,6 +323,12 @@ var init_api_keys = __esm({
|
|
|
313
323
|
apiKey: "openrouter",
|
|
314
324
|
kinds: ["llm"]
|
|
315
325
|
});
|
|
326
|
+
defineProvider({
|
|
327
|
+
id: "evolink",
|
|
328
|
+
label: "Evolink",
|
|
329
|
+
apiKey: "evolink",
|
|
330
|
+
kinds: ["llm"]
|
|
331
|
+
});
|
|
316
332
|
}
|
|
317
333
|
});
|
|
318
334
|
|
|
@@ -18808,7 +18824,8 @@ var init_schema = __esm({
|
|
|
18808
18824
|
gemini: "Gemini (Google)",
|
|
18809
18825
|
ollama: "Ollama (Local)",
|
|
18810
18826
|
xai: "Grok (xAI)",
|
|
18811
|
-
openrouter: "OpenRouter"
|
|
18827
|
+
openrouter: "OpenRouter",
|
|
18828
|
+
evolink: "Evolink"
|
|
18812
18829
|
};
|
|
18813
18830
|
PROVIDER_ENV_VARS = getProviderEnvVars();
|
|
18814
18831
|
PROVIDER_ENV_ALIASES = getProviderEnvAliases();
|
|
@@ -20632,6 +20649,7 @@ var init_api_key = __esm({
|
|
|
20632
20649
|
RUNWAY_API_SECRET: "runway",
|
|
20633
20650
|
KLING_API_KEY: "kling",
|
|
20634
20651
|
OPENROUTER_API_KEY: "openrouter",
|
|
20652
|
+
EVOLINK_API_KEY: "evolink",
|
|
20635
20653
|
IMGBB_API_KEY: "imgbb",
|
|
20636
20654
|
REPLICATE_API_TOKEN: "replicate"
|
|
20637
20655
|
};
|
|
@@ -20646,7 +20664,8 @@ var init_api_key = __esm({
|
|
|
20646
20664
|
RUNWAY_API_SECRET: "https://app.runwayml.com/settings/api-keys",
|
|
20647
20665
|
KLING_API_KEY: "https://klingai.com/dev",
|
|
20648
20666
|
REPLICATE_API_TOKEN: "https://replicate.com/account/api-tokens",
|
|
20649
|
-
IMGBB_API_KEY: "https://api.imgbb.com/"
|
|
20667
|
+
IMGBB_API_KEY: "https://api.imgbb.com/",
|
|
20668
|
+
EVOLINK_API_KEY: "https://evolink.ai/dashboard/keys"
|
|
20650
20669
|
};
|
|
20651
20670
|
ApiKeyError = class extends Error {
|
|
20652
20671
|
envVar;
|
|
@@ -475112,6 +475131,10 @@ async function dispatchVideo(beat, ctx, keyframe) {
|
|
|
475112
475131
|
// reference-to-video.
|
|
475113
475132
|
image: keyframeImageAbs,
|
|
475114
475133
|
refImages: keyframeImageAbs ? void 0 : characterRefsAbs.length > 0 ? characterRefsAbs : void 0,
|
|
475134
|
+
// Build clips are always muted in the composition (a separate narration/music
|
|
475135
|
+
// track carries audio), so the model's generated audio is never used. Disable
|
|
475136
|
+
// it: it's wasted, and Seedance's audio moderation can spuriously fail a beat.
|
|
475137
|
+
generateAudio: false,
|
|
475115
475138
|
apiKey: await apiKeyForVideoProvider(ctx.videoProvider, ctx.projectDir)
|
|
475116
475139
|
});
|
|
475117
475140
|
if (!result.success || !result.taskId) {
|
|
@@ -486964,6 +486987,109 @@ var init_openrouter = __esm({
|
|
|
486964
486987
|
}
|
|
486965
486988
|
});
|
|
486966
486989
|
|
|
486990
|
+
// ../cli/src/agent/adapters/evolink.ts
|
|
486991
|
+
var evolink_exports = {};
|
|
486992
|
+
__export(evolink_exports, {
|
|
486993
|
+
EvolinkAdapter: () => EvolinkAdapter
|
|
486994
|
+
});
|
|
486995
|
+
var EvolinkAdapter;
|
|
486996
|
+
var init_evolink = __esm({
|
|
486997
|
+
"../cli/src/agent/adapters/evolink.ts"() {
|
|
486998
|
+
"use strict";
|
|
486999
|
+
init_openai2();
|
|
487000
|
+
EvolinkAdapter = class {
|
|
487001
|
+
provider = "evolink";
|
|
487002
|
+
client = null;
|
|
487003
|
+
model = "gpt-5.2";
|
|
487004
|
+
async initialize(apiKey) {
|
|
487005
|
+
this.client = new openai_default({
|
|
487006
|
+
apiKey,
|
|
487007
|
+
baseURL: "https://direct.evolink.ai/v1",
|
|
487008
|
+
defaultHeaders: {
|
|
487009
|
+
"HTTP-Referer": "https://vibeframe.dev",
|
|
487010
|
+
"X-Title": "VibeFrame"
|
|
487011
|
+
}
|
|
487012
|
+
});
|
|
487013
|
+
}
|
|
487014
|
+
isInitialized() {
|
|
487015
|
+
return this.client !== null;
|
|
487016
|
+
}
|
|
487017
|
+
setModel(model) {
|
|
487018
|
+
this.model = model;
|
|
487019
|
+
}
|
|
487020
|
+
async chat(messages, tools2) {
|
|
487021
|
+
if (!this.client) {
|
|
487022
|
+
throw new Error("Evolink adapter not initialized");
|
|
487023
|
+
}
|
|
487024
|
+
const openaiMessages = messages.map(
|
|
487025
|
+
(msg) => {
|
|
487026
|
+
if (msg.role === "tool") {
|
|
487027
|
+
return {
|
|
487028
|
+
role: "tool",
|
|
487029
|
+
tool_call_id: msg.toolCallId,
|
|
487030
|
+
content: msg.content
|
|
487031
|
+
};
|
|
487032
|
+
}
|
|
487033
|
+
if (msg.role === "assistant" && msg.toolCalls) {
|
|
487034
|
+
return {
|
|
487035
|
+
role: "assistant",
|
|
487036
|
+
content: msg.content || null,
|
|
487037
|
+
tool_calls: msg.toolCalls.map((tc) => ({
|
|
487038
|
+
id: tc.id,
|
|
487039
|
+
type: "function",
|
|
487040
|
+
function: {
|
|
487041
|
+
name: tc.name,
|
|
487042
|
+
arguments: JSON.stringify(tc.arguments)
|
|
487043
|
+
}
|
|
487044
|
+
}))
|
|
487045
|
+
};
|
|
487046
|
+
}
|
|
487047
|
+
return {
|
|
487048
|
+
role: msg.role,
|
|
487049
|
+
content: msg.content
|
|
487050
|
+
};
|
|
487051
|
+
}
|
|
487052
|
+
);
|
|
487053
|
+
const openaiTools = tools2.map((tool) => ({
|
|
487054
|
+
type: "function",
|
|
487055
|
+
function: {
|
|
487056
|
+
name: tool.name,
|
|
487057
|
+
description: tool.description,
|
|
487058
|
+
parameters: tool.parameters
|
|
487059
|
+
}
|
|
487060
|
+
}));
|
|
487061
|
+
const response = await this.client.chat.completions.create({
|
|
487062
|
+
model: this.model,
|
|
487063
|
+
messages: openaiMessages,
|
|
487064
|
+
tools: openaiTools.length > 0 ? openaiTools : void 0,
|
|
487065
|
+
tool_choice: openaiTools.length > 0 ? "auto" : void 0
|
|
487066
|
+
});
|
|
487067
|
+
const choice = response.choices[0];
|
|
487068
|
+
const message = choice.message;
|
|
487069
|
+
let toolCalls;
|
|
487070
|
+
if (message.tool_calls && message.tool_calls.length > 0) {
|
|
487071
|
+
toolCalls = message.tool_calls.map((tc) => ({
|
|
487072
|
+
id: tc.id,
|
|
487073
|
+
name: tc.function.name,
|
|
487074
|
+
arguments: JSON.parse(tc.function.arguments)
|
|
487075
|
+
}));
|
|
487076
|
+
}
|
|
487077
|
+
let finishReason = "stop";
|
|
487078
|
+
if (choice.finish_reason === "tool_calls") {
|
|
487079
|
+
finishReason = "tool_calls";
|
|
487080
|
+
} else if (choice.finish_reason === "length") {
|
|
487081
|
+
finishReason = "length";
|
|
487082
|
+
}
|
|
487083
|
+
return {
|
|
487084
|
+
content: message.content || "",
|
|
487085
|
+
toolCalls,
|
|
487086
|
+
finishReason
|
|
487087
|
+
};
|
|
487088
|
+
}
|
|
487089
|
+
};
|
|
487090
|
+
}
|
|
487091
|
+
});
|
|
487092
|
+
|
|
486967
487093
|
// ../cli/src/commands/detect.ts
|
|
486968
487094
|
var detect_exports = {};
|
|
486969
487095
|
__export(detect_exports, {
|
|
@@ -493538,6 +493664,7 @@ init_gemini2();
|
|
|
493538
493664
|
init_ollama2();
|
|
493539
493665
|
init_xai();
|
|
493540
493666
|
init_openrouter();
|
|
493667
|
+
init_evolink();
|
|
493541
493668
|
async function createAdapter(provider) {
|
|
493542
493669
|
switch (provider) {
|
|
493543
493670
|
case "openai": {
|
|
@@ -493564,6 +493691,10 @@ async function createAdapter(provider) {
|
|
|
493564
493691
|
const { OpenRouterAdapter: OpenRouterAdapter2 } = await Promise.resolve().then(() => (init_openrouter(), openrouter_exports));
|
|
493565
493692
|
return new OpenRouterAdapter2();
|
|
493566
493693
|
}
|
|
493694
|
+
case "evolink": {
|
|
493695
|
+
const { EvolinkAdapter: EvolinkAdapter2 } = await Promise.resolve().then(() => (init_evolink(), evolink_exports));
|
|
493696
|
+
return new EvolinkAdapter2();
|
|
493697
|
+
}
|
|
493567
493698
|
default:
|
|
493568
493699
|
throw new Error(`Unknown provider: ${provider}`);
|
|
493569
493700
|
}
|
|
@@ -499737,7 +499868,7 @@ var server2 = new Server(
|
|
|
499737
499868
|
{
|
|
499738
499869
|
name: "vibeframe",
|
|
499739
499870
|
// Stamped with the package version by build.js at bundle time.
|
|
499740
|
-
version: "0.113.
|
|
499871
|
+
version: "0.113.8"
|
|
499741
499872
|
},
|
|
499742
499873
|
{
|
|
499743
499874
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/mcp-server",
|
|
3
|
-
"version": "0.113.
|
|
3
|
+
"version": "0.113.8",
|
|
4
4
|
"description": "VibeFrame MCP Server - AI-native video editing via Model Context Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"tsx": "^4.21.0",
|
|
61
61
|
"typescript": "^5.3.3",
|
|
62
62
|
"vitest": "^1.2.2",
|
|
63
|
-
"@vibeframe/cli": "0.113.
|
|
64
|
-
"@vibeframe/core": "0.113.
|
|
63
|
+
"@vibeframe/cli": "0.113.8",
|
|
64
|
+
"@vibeframe/core": "0.113.8"
|
|
65
65
|
},
|
|
66
66
|
"engines": {
|
|
67
67
|
"node": ">=20"
|