beplus-mcp 0.17.1 → 0.17.3

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 +30 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -494,6 +494,7 @@ var IMAGE_MODELS = [
494
494
  var SEEDREAM_LITE_SIZES = ["2K", "3K", "4K"];
495
495
  var SEEDREAM_PRO_SIZES = ["1K", "2K"];
496
496
  var VIDEO_MODELS = [
497
+ "bytedance/seedance-2.5",
497
498
  "bytedance/seedance-2.0",
498
499
  "bytedance/seedance-2.0-fast",
499
500
  "bytedance/seedance-2.0-mini",
@@ -545,6 +546,7 @@ var VOICES = [
545
546
  "Sulafat"
546
547
  ];
547
548
  var ASPECT_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "4:5", "5:4", "21:9"];
549
+ var VIDEO_ASPECT_RATIOS = [...ASPECT_RATIOS, "adaptive"];
548
550
  var IMAGE_RESOLUTIONS = ["1K", "2K", "4K"];
549
551
  var VIDEO_RESOLUTIONS = ["480p", "720p", "1080p", "4K"];
550
552
  var DEFAULTS = {
@@ -821,11 +823,13 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
821
823
  // Sem teto local — ver nota em generate_image. O Seedance não publica
822
824
  // limite; o Kling publica 2500 e o backend recusa dizendo quanto cortar.
823
825
  prompt: z.string().min(1).describe("Descri\xE7\xE3o do v\xEDdeo desejado."),
824
- model: z.enum(VIDEO_MODELS).default(DEFAULTS.videoModel).describe("seedance-2.0-fast = barato/r\xE1pido; seedance-2.0 = melhor; kling-v3-video = alternativa."),
825
- aspect_ratio: z.enum(ASPECT_RATIOS).optional().describe("Propor\xE7\xE3o. Padr\xE3o 16:9."),
826
- resolution: z.enum(VIDEO_RESOLUTIONS).optional().describe("480p/720p/1080p/4K (1080p/4K S\xD3 no seedance-2.0 standard; fast e mini aceitam apenas 480p/720p). Padr\xE3o 720p."),
826
+ model: z.enum(VIDEO_MODELS).default(DEFAULTS.videoModel).describe(
827
+ "seedance-2.0-fast = barato/r\xE1pido; seedance-2.5 = at\xE9 30s num take e 50 refs (m\xE1x 720p); seedance-2.0 = \xFAnico com 1080p/4K; kling-v3-video = alternativa."
828
+ ),
829
+ aspect_ratio: z.enum(VIDEO_ASPECT_RATIOS).optional().describe("Propor\xE7\xE3o. Padr\xE3o 16:9. `adaptive` (herda dos inputs) s\xF3 no seedance-2.5."),
830
+ resolution: z.enum(VIDEO_RESOLUTIONS).optional().describe("480p/720p/1080p/4K (1080p/4K S\xD3 no seedance-2.0 standard; 2.5, fast e mini aceitam apenas 480p/720p). Padr\xE3o 720p."),
827
831
  duration: z.number().int().min(3).max(60).optional().describe(
828
- "Dura\xE7\xE3o em segundos. Seedance 2.0/2.0-fast: 4\u201315 (granular). Kling: 5 ou 10. O backend valida por modelo \u2014 consulte list_models p/ os valores aceitos. Padr\xE3o 5."
832
+ "Dura\xE7\xE3o em segundos. Seedance 2.5: 4\u201330 (granular). Seedance 2.0/2.0-fast: 4\u201315. Kling: 5 ou 10. O backend valida por modelo \u2014 consulte list_models p/ os valores aceitos. Padr\xE3o 5."
829
833
  ),
830
834
  negative_prompt: z.string().max(2500).optional().describe("O que evitar no v\xEDdeo (Kling)."),
831
835
  mode: z.enum(["standard", "pro"]).optional().describe("Qualidade de gera\xE7\xE3o (Kling): standard ou pro."),
@@ -845,11 +849,32 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
845
849
  },
846
850
  async (args) => {
847
851
  try {
848
- if ((args.model === "bytedance/seedance-2.0-mini" || args.model === "bytedance/seedance-2.0-fast") && args.resolution && args.resolution !== "480p" && args.resolution !== "720p") {
852
+ if ((args.model === "bytedance/seedance-2.0-mini" || args.model === "bytedance/seedance-2.0-fast" || args.model === "bytedance/seedance-2.5") && args.resolution && args.resolution !== "480p" && args.resolution !== "720p") {
849
853
  return errorResult(
850
854
  `${args.model} s\xF3 suporta 480p ou 720p (voc\xEA pediu ${args.resolution}). Use seedance-2.0 (standard) para 1080p/4K.`
851
855
  );
852
856
  }
857
+ if (args.model === "bytedance/seedance-2.5" && args.aspect_ratio) {
858
+ const SEEDANCE_25_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "21:9", "adaptive"];
859
+ if (!SEEDANCE_25_RATIOS.includes(args.aspect_ratio)) {
860
+ return errorResult(
861
+ `bytedance/seedance-2.5 n\xE3o aceita a propor\xE7\xE3o ${args.aspect_ratio}. Use uma destas: ${SEEDANCE_25_RATIOS.join(", ")}.`
862
+ );
863
+ }
864
+ }
865
+ if (args.last_frame_image && !(args.first_frame_image ?? args.reference_image)) {
866
+ return errorResult(
867
+ "O \xFAltimo frame (`last_frame_image`) s\xF3 funciona junto com o primeiro (`first_frame_image`)."
868
+ );
869
+ }
870
+ if (args.duration != null && args.duration !== -1) {
871
+ const maxDuration = args.model === "bytedance/seedance-2.5" ? 30 : 15;
872
+ if (args.model.startsWith("bytedance/") && (args.duration < 4 || args.duration > maxDuration)) {
873
+ return errorResult(
874
+ `${args.model} aceita dura\xE7\xE3o de 4 a ${maxDuration}s (voc\xEA pediu ${args.duration}s).`
875
+ );
876
+ }
877
+ }
853
878
  const firstFrame = await resolveRef(cfg, args.first_frame_image ?? args.reference_image);
854
879
  const endImage = await resolveRef(cfg, args.last_frame_image);
855
880
  const referenceImages = await resolveRefs(cfg, args.reference_images);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "beplus-mcp",
3
- "version": "0.17.1",
3
+ "version": "0.17.3",
4
4
  "description": "Conector MCP da equipe BePlus — gere imagens/vídeos/áudio e consulte calls, projetos e clientes pela sua conta BePlus (diamantes, limites e histórico aplicados pela plataforma).",
5
5
  "type": "module",
6
6
  "bin": {