beplus-mcp 0.34.0 → 0.35.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 +30 -16
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -22546,7 +22546,7 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
|
|
|
22546
22546
|
"generate_video",
|
|
22547
22547
|
{
|
|
22548
22548
|
title: "Gerar v\xEDdeo",
|
|
22549
|
-
description: "Gera um v\xEDdeo curto usando o IA Lab da BePlus. LENTO (geralmente 1-5+ min). Aguarda at\xE9 ~2 min; se n\xE3o terminar, retorna o generation_id e o status \u2014 ent\xE3o use check_generation. Consome diamantes (mais caro para dura\xE7\xF5es/resolu\xE7\xF5es maiores). Suporta image-to-video (`first_frame_image`), \xFAltimo frame (`last_frame_image`), refer\xEAncias de imagem/v\xEDdeo/\xE1udio, prompt negativo, \xE1udio gerado e mais \u2014 os campos aceitos variam por modelo (consulte list_models). `kling-v2.6-motion-control` usa `first_frame_image` + `motion_video`. Nos modelos Seedance
|
|
22549
|
+
description: "Gera um v\xEDdeo curto usando o IA Lab da BePlus. LENTO (geralmente 1-5+ min). Aguarda at\xE9 ~2 min; se n\xE3o terminar, retorna o generation_id e o status \u2014 ent\xE3o use check_generation. Consome diamantes (mais caro para dura\xE7\xF5es/resolu\xE7\xF5es maiores). Suporta image-to-video (`first_frame_image`), \xFAltimo frame (`last_frame_image`), refer\xEAncias de imagem/v\xEDdeo/\xE1udio, prompt negativo, \xE1udio gerado e mais \u2014 os campos aceitos variam por modelo (consulte list_models). `kling-v2.6-motion-control` usa `first_frame_image` + `motion_video`. Nos modelos Seedance d\xE1 pra escolher o provedor com `provider`: `byteplus` (padr\xE3o) ou `fal`. A BytePlus bloqueia refer\xEAncia com rosto de pessoa REAL; a fal.ai aceita (custa mais caro) e \xE9 a alternativa quando a BytePlus estiver inst\xE1vel. Kling e outros modelos n\xE3o t\xEAm essa op\xE7\xE3o." + TEAM_GATING_NOTE,
|
|
22550
22550
|
inputSchema: {
|
|
22551
22551
|
// Sem teto local — ver nota em generate_image. O Seedance não publica
|
|
22552
22552
|
// limite; o Kling publica 2500 e o backend recusa dizendo quanto cortar.
|
|
@@ -22582,16 +22582,17 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
|
|
|
22582
22582
|
video_task_type: external_exports.enum(["auto", "reference", "edit", "extend"]).optional().describe(
|
|
22583
22583
|
"O que fazer com os v\xEDdeos de refer\xEAncia (s\xF3 seedance-2.5): `reference` gera um v\xEDdeo novo; `edit` edita o original (exige 1 v\xEDdeo de 4-30s, a dura\xE7\xE3o vira a dele); `extend` estende o original. Sem isto o modelo adivinha e um par\xE2metro incompat\xEDvel s\xF3 falha DEPOIS da fila."
|
|
22584
22584
|
),
|
|
22585
|
-
|
|
22586
|
-
|
|
22585
|
+
provider: external_exports.enum(["byteplus", "fal"]).optional().describe(
|
|
22586
|
+
"S\xF3 Seedance (2.0/2.0-fast/2.0-mini/2.5): qual empresa gera o v\xEDdeo. `byteplus` (padr\xE3o) \xE9 a API oficial da ByteDance. `fal` usa a fal.ai: aceita refer\xEAncia com pessoa real (a BytePlus recusa) e custa mais caro. Na fal, `first_frame_image` + `last_frame_image` funcionam (image-to-video com end frame) e o Draft Mode funciona no seedance-2.5; `output_format` e `video_task_type` (edit/extend) n\xE3o t\xEAm equivalente e s\xE3o recusados antes de cobrar, assim como `seedance-2.0-fast` em 480p (a fal n\xE3o publica pre\xE7o para essa combina\xE7\xE3o)."
|
|
22587
22587
|
),
|
|
22588
|
+
real_people_references: external_exports.boolean().optional().describe('OBSOLETO: use `provider: "fal"`. `true` aqui equivale a `provider: "fal"`.'),
|
|
22588
22589
|
project: external_exports.string().max(64).optional().describe('Projeto (uuid OU code curto, ex.: "VRAO-26"). S\xF3 omita se o usu\xE1rio J\xC1 confirmou o projeto ativo nesta sess\xE3o.'),
|
|
22589
22590
|
billing: BILLING_FIELD,
|
|
22590
22591
|
draft: external_exports.boolean().optional().describe(
|
|
22591
|
-
'Draft Mode (s\xF3 seedance-2.5,
|
|
22592
|
+
'Draft Mode (s\xF3 seedance-2.5, nos dois provedores): gera um preview 480p barato para validar composi\xE7\xE3o/movimento antes de pagar o 1080p. `resolution` fica em 480p (omita ou use "480p"). Depois de check_generation mostrar "completed", o `draft_task_id` e o provedor v\xEAm no retorno \u2014 \xE9 o que voc\xEA passa no pr\xF3ximo generate_video para render a vers\xE3o final, a mesma tomada, sem regenerar do zero.'
|
|
22592
22593
|
),
|
|
22593
22594
|
draft_task_id: external_exports.string().min(1).optional().describe(
|
|
22594
|
-
"Gera a vers\xE3o 1080p de um draft j\xE1 pronto (feito com `draft: true`). Passe aqui o `draft_task_id` que check_generation devolveu para aquele draft \u2014 N\xC3O o generation_id. Prompt/refs/seed/ratio/\xE1udio s\xE3o HERDADOS do draft, n\xE3o os reenvie. `duration` \xE9 OBRIGAT\xD3RIO e tem que ser exatamente a dura\xE7\xE3o do draft original (\xE9 o que precifica certo); `resolution` \xE9 sempre 1080p. Drafts expiram em 7 dias."
|
|
22595
|
+
"Gera a vers\xE3o 1080p de um draft j\xE1 pronto (feito com `draft: true`). Passe aqui o `draft_task_id` que check_generation devolveu para aquele draft \u2014 N\xC3O o generation_id \u2014 e o MESMO `provider` do draft (o id s\xF3 vale no provedor que gerou). Prompt/refs/seed/ratio/\xE1udio s\xE3o HERDADOS do draft, n\xE3o os reenvie. `duration` \xE9 OBRIGAT\xD3RIO e tem que ser exatamente a dura\xE7\xE3o do draft original (\xE9 o que precifica certo); `resolution` \xE9 sempre 1080p. Drafts expiram em 7 dias."
|
|
22595
22596
|
)
|
|
22596
22597
|
}
|
|
22597
22598
|
},
|
|
@@ -22618,6 +22619,12 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
|
|
|
22618
22619
|
if (!args.draft_task_id && !args.prompt) {
|
|
22619
22620
|
return errorResult("`prompt` \xE9 obrigat\xF3rio (s\xF3 pode faltar ao usar `draft_task_id`).");
|
|
22620
22621
|
}
|
|
22622
|
+
if (args.draft && args.draft_task_id) {
|
|
22623
|
+
return errorResult("Use `draft` OU `draft_task_id`, n\xE3o os dois no mesmo pedido.");
|
|
22624
|
+
}
|
|
22625
|
+
if (args.draft && args.resolution && args.resolution !== "480p") {
|
|
22626
|
+
return errorResult('O Draft Mode s\xF3 gera em 480p \u2014 omita `resolution` ou use "480p".');
|
|
22627
|
+
}
|
|
22621
22628
|
if (args.draft_task_id) {
|
|
22622
22629
|
if (args.duration == null) {
|
|
22623
22630
|
return errorResult("Ao usar `draft_task_id`, `duration` \xE9 obrigat\xF3rio \u2014 a mesma dura\xE7\xE3o do draft original.");
|
|
@@ -22629,21 +22636,24 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
|
|
|
22629
22636
|
if (!isSeedance25 && args.video_task_type && args.video_task_type !== "auto") {
|
|
22630
22637
|
return errorResult(`Editar e estender v\xEDdeo s\xF3 existe no seedance-2.5 (voc\xEA pediu ${args.model}).`);
|
|
22631
22638
|
}
|
|
22632
|
-
|
|
22633
|
-
|
|
22639
|
+
const isSeedance = !!args.model?.startsWith("bytedance/seedance-");
|
|
22640
|
+
if ((args.provider || args.real_people_references) && !isSeedance) {
|
|
22641
|
+
return errorResult(`A escolha de provedor (provider/real_people_references) s\xF3 existe nos modelos Seedance (voc\xEA pediu ${args.model}).`);
|
|
22634
22642
|
}
|
|
22635
|
-
if (args.real_people_references) {
|
|
22643
|
+
if (args.provider === "byteplus" && args.real_people_references) {
|
|
22644
|
+
return errorResult('`real_people_references: true` usa a fal.ai e contradiz `provider: "byteplus"`. Use s\xF3 `provider`.');
|
|
22645
|
+
}
|
|
22646
|
+
const seedanceProvider = args.provider ?? (args.real_people_references ? "fal" : void 0);
|
|
22647
|
+
if (seedanceProvider === "fal") {
|
|
22636
22648
|
const unsupported = [];
|
|
22637
22649
|
if (args.output_format && args.output_format !== "mp4") unsupported.push("output_format");
|
|
22638
22650
|
if (args.video_task_type && args.video_task_type !== "auto") unsupported.push("video_task_type (edit/extend)");
|
|
22639
22651
|
if (args.model === "bytedance/seedance-2.0-fast" && args.resolution === "480p") {
|
|
22640
22652
|
unsupported.push("resolution 480p (a fal n\xE3o publica pre\xE7o para seedance-2.0-fast nesta resolu\xE7\xE3o)");
|
|
22641
22653
|
}
|
|
22642
|
-
if (args.draft) unsupported.push("draft (Modo Rascunho \u2014 s\xF3 existe na BytePlus)");
|
|
22643
|
-
if (args.draft_task_id) unsupported.push("draft_task_id (upscale de rascunho \u2014 s\xF3 existe na BytePlus)");
|
|
22644
22654
|
if (unsupported.length > 0) {
|
|
22645
22655
|
return errorResult(
|
|
22646
|
-
`Com
|
|
22656
|
+
`Com provider "fal", a fal.ai n\xE3o suporta: ${unsupported.join(", ")}. Remova essas op\xE7\xF5es.`
|
|
22647
22657
|
);
|
|
22648
22658
|
}
|
|
22649
22659
|
}
|
|
@@ -22681,11 +22691,12 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
|
|
|
22681
22691
|
draft_task_id: args.draft_task_id,
|
|
22682
22692
|
resolution: "1080p",
|
|
22683
22693
|
duration: args.duration,
|
|
22684
|
-
output_format: args.output_format
|
|
22694
|
+
output_format: args.output_format,
|
|
22695
|
+
seedanceProvider
|
|
22685
22696
|
}) : compact({
|
|
22686
22697
|
prompt: args.prompt,
|
|
22687
22698
|
aspect_ratio: args.aspect_ratio ?? DEFAULTS.videoAspect,
|
|
22688
|
-
resolution: args.resolution ?? DEFAULTS.videoResolution,
|
|
22699
|
+
resolution: args.resolution ?? (args.draft ? "480p" : DEFAULTS.videoResolution),
|
|
22689
22700
|
duration: args.duration ?? DEFAULTS.videoDuration,
|
|
22690
22701
|
negative_prompt: args.negative_prompt,
|
|
22691
22702
|
mode: args.mode,
|
|
@@ -22703,7 +22714,7 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
|
|
|
22703
22714
|
output_format: args.output_format,
|
|
22704
22715
|
omni_reference_task_type: args.video_task_type,
|
|
22705
22716
|
draft: args.draft,
|
|
22706
|
-
|
|
22717
|
+
seedanceProvider
|
|
22707
22718
|
});
|
|
22708
22719
|
const start = await client.startGeneration(
|
|
22709
22720
|
compact({
|
|
@@ -22761,9 +22772,10 @@ ${BUDGET_BLOCKED_GUIDANCE}`);
|
|
|
22761
22772
|
const urls = outputUrls(status);
|
|
22762
22773
|
const blocks = await buildImageBlocks(urls, cfg);
|
|
22763
22774
|
const list = urls.map((u, i) => `${i + 1}. ${u}`).join("\n") || "(sem URLs)";
|
|
22775
|
+
const draftProvider = status.seedance_provider ?? "byteplus";
|
|
22764
22776
|
const draftHint = status.draft_task_id ? `
|
|
22765
22777
|
|
|
22766
|
-
\u{1F3AC} Draft pronto \u2014 pra gerar em 1080p, chame generate_video de novo com draft_task_id: "${status.draft_task_id}"
|
|
22778
|
+
\u{1F3AC} Draft pronto (provedor: ${draftProvider === "fal" ? "fal.ai" : "BytePlus"}) \u2014 pra gerar em 1080p, chame generate_video de novo com draft_task_id: "${status.draft_task_id}", provider: "${draftProvider}" e a mesma duration deste draft.` : "";
|
|
22767
22779
|
return { content: [{ type: "text", text: `\u2705 Pronto.
|
|
22768
22780
|
${list}${flagsLine(status)}${draftHint}` }, ...blocks] };
|
|
22769
22781
|
}
|
|
@@ -23871,6 +23883,7 @@ Limites simult\xE2neos por usu\xE1rio: imagem=${m.limits.perUserMaxImage}, v\xED
|
|
|
23871
23883
|
quality: external_exports.string().optional(),
|
|
23872
23884
|
aspect_ratio: external_exports.string().optional().describe("Seedream Pro: a propor\xE7\xE3o muda os pixels e a faixa de pre\xE7o."),
|
|
23873
23885
|
num_images: external_exports.number().int().min(1).optional().describe("Seedream Pro: imagens por pedido; cada uma \xE9 cobrada."),
|
|
23886
|
+
provider: external_exports.enum(["byteplus", "fal"]).optional().describe("Seedance: provedor que vai gerar (padr\xE3o byteplus). `fal` tem pre\xE7o pr\xF3prio, mais caro."),
|
|
23874
23887
|
// Upscale: o preço não sai de uma chave fixa — vem das medidas do
|
|
23875
23888
|
// arquivo (megapixel de saída na imagem, bloco de 10s no vídeo). Sem
|
|
23876
23889
|
// elas o backend responde pelo padrão de 1024²/10s, que não é o preço
|
|
@@ -23914,6 +23927,7 @@ Limites simult\xE2neos por usu\xE1rio: imagem=${m.limits.perUserMaxImage}, v\xED
|
|
|
23914
23927
|
quality: args.quality,
|
|
23915
23928
|
aspect_ratio: args.aspect_ratio,
|
|
23916
23929
|
num_images: args.num_images,
|
|
23930
|
+
seedance_provider: args.provider === "fal" ? "fal" : void 0,
|
|
23917
23931
|
upscale_factor: args.upscale_factor,
|
|
23918
23932
|
model_variant: args.model_variant,
|
|
23919
23933
|
source_width: width2,
|
|
@@ -27037,7 +27051,7 @@ N\xF3s: ${Object.entries(ids).map(([k, v]) => `${k}=${v}`).join(" \xB7 ")}` : ""
|
|
|
27037
27051
|
import { createRequire } from "module";
|
|
27038
27052
|
var require2 = createRequire(import.meta.url);
|
|
27039
27053
|
function readVersion() {
|
|
27040
|
-
if ("0.
|
|
27054
|
+
if ("0.35.0") return "0.35.0";
|
|
27041
27055
|
try {
|
|
27042
27056
|
const pkg = require2("../package.json");
|
|
27043
27057
|
return pkg.version ?? "0.0.0-unknown";
|