@vibeframe/mcp-server 0.90.0 → 0.91.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.
Files changed (2) hide show
  1. package/dist/index.js +34 -16
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -14022,7 +14022,7 @@ function getCommandKeyMap() {
14022
14022
  function getSetupProviders() {
14023
14023
  return [...apiKeyRegistry.values()].filter((k) => k.showInSetup).map((k) => ({
14024
14024
  key: k.configKey,
14025
- name: k.label,
14025
+ name: getDisplayLabelForApiKey(k.configKey),
14026
14026
  env: k.envVar,
14027
14027
  desc: k.setupDescription ?? "",
14028
14028
  url: k.envExampleUrl
@@ -14034,6 +14034,16 @@ function getAllApiKeys() {
14034
14034
  function getKeyFormat(configKey) {
14035
14035
  return apiKeyRegistry.get(configKey)?.keyFormat;
14036
14036
  }
14037
+ function getDisplayLabelForApiKey(configKey) {
14038
+ const apiKey = apiKeyRegistry.get(configKey);
14039
+ if (!apiKey)
14040
+ return configKey;
14041
+ const provider = [...providerRegistry2.values()].find((p) => p.apiKey === configKey && p.displayName && p.gateway);
14042
+ if (provider?.displayName && provider.gateway) {
14043
+ return `${provider.displayName} (via ${provider.gateway})`;
14044
+ }
14045
+ return apiKey.label;
14046
+ }
14037
14047
  function getAllProviders() {
14038
14048
  return [...providerRegistry2.values()];
14039
14049
  }
@@ -24138,7 +24148,7 @@ var init_FalProvider = __esm({
24138
24148
  VALID_ASPECTS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "auto"];
24139
24149
  FalProvider = class {
24140
24150
  constructor() {
24141
- this.id = "fal";
24151
+ this.id = "seedance";
24142
24152
  this.name = "fal.ai (Seedance 2.0)";
24143
24153
  this.description = "fal.ai hosting ByteDance Seedance 2.0 \u2014 Artificial Analysis #2 on both text-to-video and image-to-video leaderboards";
24144
24154
  this.capabilities = ["text-to-video", "image-to-video"];
@@ -24237,11 +24247,13 @@ var init_fal = __esm({
24237
24247
  init_FalProvider();
24238
24248
  init_define_provider();
24239
24249
  defineProvider({
24240
- id: "fal",
24241
- label: "fal.ai (Seedance 2.0)",
24250
+ id: "seedance",
24251
+ label: "Seedance 2.0",
24242
24252
  displayName: "Seedance 2.0",
24243
24253
  gateway: "fal.ai",
24244
- aliases: ["seedance"],
24254
+ // `fal` is a deprecated v0.x alias kept so existing scripts keep working.
24255
+ // Will be removed at the 1.0 cut (see docs/1.0-readiness.md).
24256
+ aliases: ["fal"],
24245
24257
  models: ["seedance-2.0", "seedance-2.0-fast"],
24246
24258
  capabilities: ["text-to-video", "image-to-video", "native-audio"],
24247
24259
  apiKey: "fal",
@@ -24942,6 +24954,7 @@ __export(dist_exports, {
24942
24954
  getAllProviders: () => getAllProviders,
24943
24955
  getBestProviderForCapability: () => getBestProviderForCapability,
24944
24956
  getCommandKeyMap: () => getCommandKeyMap,
24957
+ getDisplayLabelForApiKey: () => getDisplayLabelForApiKey,
24945
24958
  getKeyFormat: () => getKeyFormat,
24946
24959
  getProviderEnvVars: () => getProviderEnvVars,
24947
24960
  getProvidersFor: () => getProvidersFor,
@@ -459891,9 +459904,9 @@ var init_ai_script_pipeline = __esm({
459891
459904
  import { resolve as resolve50 } from "node:path";
459892
459905
  import { readFile as readFile25, writeFile as writeFile33 } from "node:fs/promises";
459893
459906
  function registerVideoCommand(parent) {
459894
- parent.command("video").alias("vid").description("Generate video using AI (Seedance, Grok, Kling, Runway, or Veo)").argument("[prompt]", "Text prompt describing the video (interactive if omitted)").option("-p, --provider <provider>", "Provider: seedance (ByteDance Seedance 2.0 via fal.ai), grok, kling, runway, veo. `fal` is a backwards-compatible alias for seedance.").option("-k, --api-key <key>", "API key (or set FAL_KEY / XAI_API_KEY / RUNWAY_API_SECRET / KLING_API_KEY / GOOGLE_API_KEY env)").option("-o, --output <path>", "Output file path (downloads video)").option("-i, --image <path>", "Reference image for image-to-video").option(
459907
+ parent.command("video").alias("vid").description("Generate video using AI (Seedance, Grok, Kling, Runway, or Veo)").argument("[prompt]", "Text prompt describing the video (interactive if omitted)").option("-p, --provider <provider>", "Provider: seedance (ByteDance Seedance 2.0 via fal.ai), grok, kling, runway, veo. `fal` is a deprecated v0.x alias for seedance and will be removed in 1.0.").option("-k, --api-key <key>", "API key (or set FAL_KEY / XAI_API_KEY / RUNWAY_API_SECRET / KLING_API_KEY / GOOGLE_API_KEY env)").option("-o, --output <path>", "Output file path (downloads video)").option("-i, --image <path>", "Reference image for image-to-video").option(
459895
459908
  "-d, --duration <sec>",
459896
- "Duration in seconds. Seedance accepts 4-15 (`fal` alias supported); Kling accepts 5 or 10; Veo maps to 6 or 8.",
459909
+ "Duration in seconds. Seedance accepts 4-15; Kling accepts 5 or 10; Veo maps to 6 or 8.",
459897
459910
  "5"
459898
459911
  ).option("-r, --ratio <ratio>", "Aspect ratio: 16:9, 9:16, or 1:1 (auto-detected from image if omitted)").option("--seed <number>", "Random seed for reproducibility (Runway only)").option("--mode <mode>", "Generation mode: std or pro (Kling only)", "std").option("--seedance-model <model>", "Seedance variant: quality or fast (fal.ai only)", "quality").option("--negative <prompt>", "Negative prompt - what to avoid (Kling/Veo)").option("--resolution <res>", "Video resolution: 720p, 1080p, 4k (Veo only)").option("--last-frame <path>", "Last frame image for frame interpolation (Veo only)").option("--ref-images <paths...>", "Reference images for character consistency (Veo 3.1 only, max 3)").option("--person <mode>", "Person generation: allow_all, allow_adult (Veo only)").option("--veo-model <model>", "Veo model: 3.0, 3.1, 3.1-fast (default: 3.1-fast)", "3.1-fast").option("--runway-model <model>", "Runway model: gen4.5 (default, text+image-to-video), gen4_turbo (image-to-video only)", "gen4.5").option("--no-wait", "Start generation and return task ID without waiting").option("--dry-run", "Preview parameters without executing").addHelpText("after", `
459899
459912
  Examples:
@@ -459939,8 +459952,7 @@ Examples:
459939
459952
  veo: "GOOGLE_API_KEY",
459940
459953
  kling: "KLING_API_KEY",
459941
459954
  runway: "RUNWAY_API_SECRET",
459942
- seedance: "FAL_KEY",
459943
- fal: "FAL_KEY"
459955
+ seedance: "FAL_KEY"
459944
459956
  };
459945
459957
  let provider;
459946
459958
  if (options.provider) {
@@ -459949,10 +459961,18 @@ Examples:
459949
459961
  exitWithError(
459950
459962
  usageError(
459951
459963
  `Invalid provider: ${provider}`,
459952
- "Available providers: seedance, grok, kling, runway, veo. `fal` is a backwards-compatible alias for seedance."
459964
+ "Available providers: seedance, grok, kling, runway, veo. `fal` is a deprecated alias for seedance."
459953
459965
  )
459954
459966
  );
459955
459967
  }
459968
+ if (provider === "fal") {
459969
+ process.stderr.write(
459970
+ source_default.yellow(
459971
+ "Note: `-p fal` is a deprecated alias for `-p seedance` and will be removed in 1.0.\n"
459972
+ )
459973
+ );
459974
+ provider = "seedance";
459975
+ }
459956
459976
  if (videoEnvMap[provider] && !hasApiKey(videoEnvMap[provider]) && !options.apiKey) {
459957
459977
  const resolved = resolveProvider("video");
459958
459978
  if (resolved) {
@@ -460012,7 +460032,7 @@ Examples:
460012
460032
  data: {
460013
460033
  params: {
460014
460034
  prompt: prompt3,
460015
- provider: provider === "fal" ? "seedance" : provider,
460035
+ provider,
460016
460036
  duration: options.duration,
460017
460037
  ratio: options.ratio,
460018
460038
  image: options.image,
@@ -460031,16 +460051,14 @@ Examples:
460031
460051
  kling: "KLING_API_KEY",
460032
460052
  veo: "GOOGLE_API_KEY",
460033
460053
  grok: "XAI_API_KEY",
460034
- seedance: "FAL_KEY",
460035
- fal: "FAL_KEY"
460054
+ seedance: "FAL_KEY"
460036
460055
  };
460037
460056
  const providerNameMap = {
460038
460057
  runway: "Runway",
460039
460058
  kling: "Kling",
460040
460059
  veo: "Veo",
460041
460060
  grok: "Grok",
460042
- seedance: "Seedance 2.0 via fal.ai",
460043
- fal: "Seedance 2.0 via fal.ai"
460061
+ seedance: "Seedance 2.0 via fal.ai"
460044
460062
  };
460045
460063
  const envKey = envKeyMap[provider];
460046
460064
  const providerName = providerNameMap[provider];
@@ -460259,7 +460277,7 @@ Examples:
460259
460277
  },
460260
460278
  3e5
460261
460279
  );
460262
- } else if (provider === "fal" || provider === "seedance") {
460280
+ } else if (provider === "seedance") {
460263
460281
  const fal = new FalProvider();
460264
460282
  await fal.initialize({ apiKey });
460265
460283
  let falImage = referenceImage;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeframe/mcp-server",
3
- "version": "0.90.0",
3
+ "version": "0.91.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.90.0",
61
- "@vibeframe/core": "0.90.0"
60
+ "@vibeframe/core": "0.91.0",
61
+ "@vibeframe/cli": "0.91.0"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=20"