beplus-mcp 0.29.0 → 0.30.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 CHANGED
@@ -22141,7 +22141,9 @@ var IMAGE_MODELS = [
22141
22141
  "midjourney"
22142
22142
  ];
22143
22143
  var SEEDREAM_LITE_SIZES = ["2K", "3K", "4K"];
22144
- var SEEDREAM_PRO_SIZES = ["1K", "2K"];
22144
+ var SEEDREAM_PRO_SIZES = ["1K", "1.5K", "2K"];
22145
+ var SEEDREAM_PRO_PIXELS = { min: 921600, max: 4624220 };
22146
+ var SEEDREAM_PRO_MAX_IMAGES = 4;
22145
22147
  var VIDEO_MODELS = [
22146
22148
  "bytedance/seedance-2.5",
22147
22149
  "bytedance/seedance-2.0",
@@ -22263,17 +22265,25 @@ function registerGenerationTools(server, client, cfg) {
22263
22265
  // que o modelo aceita (Seedream/nano-banana não têm limite publicado).
22264
22266
  prompt: external_exports.string().min(1).describe("Descri\xE7\xE3o da imagem desejada."),
22265
22267
  model: external_exports.enum(IMAGE_MODELS).default(DEFAULTS.imageModel).describe(
22266
- "nano-banana-2 = barato/r\xE1pido; nano-banana-pro = melhor qualidade; gpt-image-2 = OpenAI; gpt-image-1 = OpenAI, \xDANICO que faz fundo transparente de verdade (PNG/WebP com alpha) \u2014 o gpt-image-2 N\xC3O faz, use este pra recorte/sticker; seedream-5.0-lite = mais barato do cat\xE1logo, \xFAnico que chega a 4K, gera s\xE9ries e mant\xE9m o ESTILO da imagem de refer\xEAncia; seedream-5.0-pro = acabamento fotorrealista, s\xF3 at\xE9 2K \u2014 preserva o personagem da refer\xEAncia mas costuma reinterpretar o estilo (um vetor flat volta em 3D)."
22268
+ "nano-banana-2 = barato/r\xE1pido; nano-banana-pro = melhor qualidade; gpt-image-2 = OpenAI; gpt-image-1 = OpenAI, \xDANICO que faz fundo transparente de verdade (PNG/WebP com alpha) \u2014 o gpt-image-2 N\xC3O faz, use este pra recorte/sticker; seedream-5.0-lite = mais barato do cat\xE1logo, \xFAnico que chega a 4K, gera s\xE9ries e mant\xE9m o ESTILO da imagem de refer\xEAncia; seedream-5.0-pro = acabamento fotorrealista, s\xF3 at\xE9 2K (1K/1.5K/2K, propor\xE7\xE3o, tamanho livre e at\xE9 4 imagens por pedido) \u2014 preserva o personagem da refer\xEAncia mas costuma reinterpretar o estilo (um vetor flat volta em 3D)."
22269
+ ),
22270
+ aspect_ratio: external_exports.enum(ASPECT_RATIOS).optional().describe(
22271
+ "Propor\xE7\xE3o. nano-banana: padr\xE3o 1:1. Seedream Pro: combina com size (1K/1.5K/2K) e vira LARGURAxALTURA no backend; sem ela o modelo escolhe o formato pelo prompt."
22267
22272
  ),
22268
- aspect_ratio: external_exports.enum(ASPECT_RATIOS).optional().describe("Propor\xE7\xE3o (nano-banana). Padr\xE3o 1:1."),
22269
22273
  resolution: external_exports.enum(IMAGE_RESOLUTIONS).optional().describe("Resolu\xE7\xE3o (nano-banana): 1K/2K/4K. Padr\xE3o 1K."),
22270
22274
  reference_images: external_exports.array(external_exports.string().min(1)).max(16).optional().describe(
22271
22275
  "Imagens de refer\xEAncia (image-to-image): URL p\xFAblica OU caminho de arquivo local (o MCP faz upload pro R2 automaticamente). At\xE9 14 (nano-banana) / 16 (gpt-image-1/2)."
22272
22276
  ),
22273
22277
  google_search: external_exports.boolean().optional().describe("nano-banana-2: aterra a imagem em busca web do Google (fatos atuais). Padr\xE3o false."),
22274
22278
  image_search: external_exports.boolean().optional().describe("nano-banana-2: usa busca de imagens do Google como refer\xEAncia visual. Padr\xE3o false."),
22275
- size: external_exports.enum(["1024x1024", "1536x1024", "1024x1536", "auto", "1K", "2K", "3K", "4K"]).optional().describe(
22276
- "Tamanho. gpt-image-1/2: 1024x1024/1536x1024/1024x1536/auto. Seedream Lite: 2K/3K/4K (padr\xE3o 2K). Seedream Pro: 1K/2K apenas \u2014 o Pro N\xC3O faz 3K/4K."
22279
+ size: external_exports.union([
22280
+ external_exports.enum(["1024x1024", "1536x1024", "1024x1536", "auto", "1K", "1.5K", "2K", "3K", "4K"]),
22281
+ external_exports.string().regex(/^\d{3,5}x\d{3,5}$/, "use LARGURAxALTURA, ex.: 2048x1152")
22282
+ ]).optional().describe(
22283
+ "Tamanho. gpt-image-1/2: 1024x1024/1536x1024/1024x1536/auto. Seedream Lite: 2K/3K/4K (padr\xE3o 2K). Seedream Pro: 1K/1.5K/2K ou LARGURAxALTURA livre (\xE1rea entre 921.600 e 4.624.220 pixels, propor\xE7\xE3o de 1:16 a 16:1). O Pro N\xC3O faz 3K/4K."
22284
+ ),
22285
+ num_images: external_exports.number().int().min(1).max(SEEDREAM_PRO_MAX_IMAGES).optional().describe(
22286
+ "Seedream 5.0 PRO apenas: quantas imagens gerar no mesmo pedido (1-4), em chamadas paralelas. Cada imagem \xE9 cobrada; as que falharem s\xE3o estornadas."
22277
22287
  ),
22278
22288
  batch_images: external_exports.number().int().min(2).max(15).optional().describe(
22279
22289
  "Seedream 5.0 LITE apenas: gera uma s\xE9rie de imagens relacionadas numa chamada (2-15). Cada imagem \xE9 cobrada. O Seedream Pro N\xC3O suporta \u2014 passar aqui devolve erro."
@@ -22314,7 +22324,19 @@ function registerGenerationTools(server, client, cfg) {
22314
22324
  const isSeedream = isSeedreamLite || isSeedreamPro;
22315
22325
  if (isSeedream) {
22316
22326
  const allowed = isSeedreamPro ? SEEDREAM_PRO_SIZES : SEEDREAM_LITE_SIZES;
22317
- if (args.size && !allowed.includes(args.size)) {
22327
+ const free = args.size?.match(/^(\d+)x(\d+)$/);
22328
+ if (isSeedreamPro && free) {
22329
+ const w = Number(free[1]);
22330
+ const h = Number(free[2]);
22331
+ if (w * h < SEEDREAM_PRO_PIXELS.min || w * h > SEEDREAM_PRO_PIXELS.max) {
22332
+ return errorResult(
22333
+ `size ${args.size} d\xE1 ${w * h} pixels; o Pro aceita entre ${SEEDREAM_PRO_PIXELS.min} e ${SEEDREAM_PRO_PIXELS.max} (ex.: 1280x720 a 2048x2048).`
22334
+ );
22335
+ }
22336
+ if (w / h > 16 || h / w > 16) {
22337
+ return errorResult(`size ${args.size}: a propor\xE7\xE3o precisa ficar entre 1:16 e 16:1.`);
22338
+ }
22339
+ } else if (args.size && !allowed.includes(args.size)) {
22318
22340
  return errorResult(
22319
22341
  `${args.model} aceita size ${allowed.join("/")} (voc\xEA pediu ${args.size}). ` + (isSeedreamPro ? "O Pro n\xE3o faz 3K/4K \u2014 use o seedream-5.0-lite para resolu\xE7\xF5es maiores." : "O Lite n\xE3o faz 1K \u2014 use o seedream-5.0-pro se quiser a resolu\xE7\xE3o menor.")
22320
22342
  );
@@ -22336,6 +22358,11 @@ function registerGenerationTools(server, client, cfg) {
22336
22358
  } else if (args.batch_images) {
22337
22359
  return errorResult("batch_images s\xF3 existe no bytedance/seedream-5.0-lite.");
22338
22360
  }
22361
+ if (args.num_images && args.num_images > 1 && !isSeedreamPro) {
22362
+ return errorResult(
22363
+ "num_images s\xF3 existe no bytedance/seedream-5.0-pro. No seedream-5.0-lite use batch_images; nos outros modelos, chame generate_image mais vezes."
22364
+ );
22365
+ }
22339
22366
  if (args.background === "transparent") {
22340
22367
  if (args.model !== "openai/gpt-image-1") {
22341
22368
  return errorResult(
@@ -22365,6 +22392,7 @@ function registerGenerationTools(server, client, cfg) {
22365
22392
  // amigável exposto aqui.
22366
22393
  sequential_image_generation: isSeedreamLite && args.batch_images ? "auto" : void 0,
22367
22394
  max_images: isSeedreamLite && args.batch_images ? args.batch_images : void 0,
22395
+ num_images: isSeedreamPro && args.num_images && args.num_images > 1 ? args.num_images : void 0,
22368
22396
  quality: isMidjourney ? args.mj_quality : args.quality,
22369
22397
  background: args.background,
22370
22398
  moderation: args.moderation,
@@ -23671,6 +23699,8 @@ Limites simult\xE2neos por usu\xE1rio: imagem=${m.limits.perUserMaxImage}, v\xED
23671
23699
  mode: external_exports.string().optional(),
23672
23700
  size: external_exports.string().optional(),
23673
23701
  quality: external_exports.string().optional(),
23702
+ aspect_ratio: external_exports.string().optional().describe("Seedream Pro: a propor\xE7\xE3o muda os pixels e a faixa de pre\xE7o."),
23703
+ num_images: external_exports.number().int().min(1).optional().describe("Seedream Pro: imagens por pedido; cada uma \xE9 cobrada."),
23674
23704
  // Upscale: o preço não sai de uma chave fixa — vem das medidas do
23675
23705
  // arquivo (megapixel de saída na imagem, bloco de 10s no vídeo). Sem
23676
23706
  // elas o backend responde pelo padrão de 1024²/10s, que não é o preço
@@ -23712,6 +23742,8 @@ Limites simult\xE2neos por usu\xE1rio: imagem=${m.limits.perUserMaxImage}, v\xED
23712
23742
  mode: args.mode,
23713
23743
  size: args.size,
23714
23744
  quality: args.quality,
23745
+ aspect_ratio: args.aspect_ratio,
23746
+ num_images: args.num_images,
23715
23747
  upscale_factor: args.upscale_factor,
23716
23748
  model_variant: args.model_variant,
23717
23749
  source_width: width2,
@@ -26459,7 +26491,7 @@ N\xF3s: ${Object.entries(ids).map(([k, v]) => `${k}=${v}`).join(" \xB7 ")}` : ""
26459
26491
  import { createRequire } from "module";
26460
26492
  var require2 = createRequire(import.meta.url);
26461
26493
  function readVersion() {
26462
- if ("0.29.0") return "0.29.0";
26494
+ if ("0.30.0") return "0.30.0";
26463
26495
  try {
26464
26496
  const pkg = require2("../package.json");
26465
26497
  return pkg.version ?? "0.0.0-unknown";