@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.
Files changed (2) hide show
  1. package/dist/index.js +134 -3
  2. 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.6"
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.6",
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.6",
64
- "@vibeframe/core": "0.113.6"
63
+ "@vibeframe/cli": "0.113.8",
64
+ "@vibeframe/core": "0.113.8"
65
65
  },
66
66
  "engines": {
67
67
  "node": ">=20"