freebeat-mcp 0.1.3 → 0.1.4

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/CHANGELOG.md CHANGED
@@ -6,6 +6,13 @@ The format is based on Keep a Changelog, and this project follows Semantic Versi
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.4] - 2026-07-10
10
+
11
+ ### Added
12
+ - Synced Open RPC generative media support with `freebeat-cli`: expanded model catalog, explicit image options, Qwen edit defaults, video generation modes, watermark, style, and multi-clip controls.
13
+ - Synced GPT-Image 1.5 pricing compatibility defaults: model `70` now sends `quality=medium` and `resolution=1024x1024` for image generation and editing when omitted.
14
+ - Synced latest CLI media catalog constraints: GPT-Image 1.5 resolution allowlist, no `kling-o3-pro` reference mode, and temporarily hidden `wan-v2.6-video`.
15
+
9
16
  ## [0.1.3] - 2026-06-18
10
17
 
11
18
  ### Added
package/README.md CHANGED
@@ -206,6 +206,7 @@ Parameters:
206
206
  - `model` required, using either a numeric `model_id` or API model key from `list_models`
207
207
 
208
208
  Use this before video generation to confirm required `duration`, `resolution`, supported `aspect_ratio`, and whether `generate_audio` is supported.
209
+ For video models, help also lists supported generation modes (`text`, `image`, `transition`, `reference`) and duration values by resolution when the local catalog has that detail.
209
210
 
210
211
  ### `generate_image`
211
212
 
@@ -225,9 +226,11 @@ Parameters:
225
226
  - `size` optional
226
227
  - `resolution` optional
227
228
  - `quality` optional
229
+ - `output_format` optional, for supported models such as `png`, `jpeg`, or `webp`
230
+ - `custom_resolution` optional, only accepted for models that support custom pixel dimensions
228
231
  - `count` optional, default `1`
229
232
 
230
- For GPT-Image 2 (`model_id` `108`), the MCP server sends `quality: "medium"` and `resolution: "1024x1024"` by default when omitted. If `resolution` is omitted but `size` is provided, that `size` is also sent as `resolution` for compatibility.
233
+ For GPT-Image 1.5 (`model_id` `70`) and GPT-Image 2 (`model_id` `108`), the MCP server sends `quality: "medium"` and `resolution: "1024x1024"` by default when omitted. GPT-Image 1.5 currently accepts `resolution` values `1024x1024`, `1536x1024`, and `1024x1536`; GPT-Image 2 exposes its broader list through `get_model_help`. If `resolution` is omitted but `size` is provided, that `size` is also sent as `resolution` for compatibility.
231
234
 
232
235
  ### `edit_image`
233
236
 
@@ -246,13 +249,18 @@ Parameters:
246
249
  - `model` required, from `list_models`
247
250
  - `image` required, a single image URL
248
251
  - `prompt` required, trimmed length must be `1` to `2000`
252
+ - `size` optional
249
253
  - `resolution` optional
250
254
  - `quality` optional
255
+ - `output_format` optional
256
+ - `custom_resolution` optional
251
257
  - `count` optional, default `1`
252
258
 
259
+ For Qwen Image Edit (`model_id` `76`), the MCP server sends `quality: "medium"`, `resolution: "1024x1024"`, and `customResolution: 1` by default for pricing compatibility.
260
+
253
261
  ### `generate_video`
254
262
 
255
- Create an async Open RPC text-to-video batch.
263
+ Create an async Open RPC video generation batch.
256
264
 
257
265
  Recommended flow:
258
266
 
@@ -265,12 +273,17 @@ Parameters:
265
273
 
266
274
  - `model` required, from `list_models`
267
275
  - `prompt` required, trimmed length must be `1` to `2000`
276
+ - `generation_type` optional, default `text`; supported values are `text`, `image`, `transition`, and `reference`
277
+ - `images` required for non-text modes: exactly one for `image`, exactly two for `transition`, at least one for `reference`; entries may be image URLs or local image paths
268
278
  - `duration` required when the selected model declares supported durations
269
279
  - `resolution` required when the selected model declares supported resolutions
270
280
  - `aspect_ratio` optional, validated when the selected model declares supported ratios
281
+ - `style` optional, only accepted for models that declare styles
271
282
  - `generate_audio` optional, only accepted for models that support generated audio
283
+ - `multi_clip` optional, only accepted for models that support multi-clip generation
284
+ - `watermark` optional, default `false`; Open RPC video requests send `watermark: 0` unless set
272
285
 
273
- Video model constraints are validated locally before a request is sent.
286
+ Video model constraints are validated locally before a request is sent. Local images used for video generation must be at least `300x300` and are uploaded automatically. `wan-v2.6-video` is not exposed until its downstream reference image mapping is fixed; `kling-o3-pro` currently exposes `text`, `image`, and `transition`, but not `reference`.
274
287
 
275
288
  ### `get_task_status`
276
289
 
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { resolveImageQuality, resolveImageResolution, resolveModelForCommand, } from "../../../core/model-catalog.js";
2
+ import { resolveCustomResolutionValue, resolveImageQuality, resolveImageResolution, resolveModelForCommand, validateImageCatalogConstraints, } from "../../../core/model-catalog.js";
3
3
  import { normalizeGenerationPrompt } from "../../../core/prompt.js";
4
4
  import { formatToolError, jsonContent } from "../../../core/response.js";
5
5
  import { batchCreateOutputSchema, normalizeBatchCreate } from "./shared.js";
@@ -16,6 +16,10 @@ export function registerEditImageTool(server, client) {
16
16
  .min(1, "prompt must not be empty or whitespace only")
17
17
  .max(2000, "prompt must be at most 2000 characters after trimming")
18
18
  .describe("Image edit prompt."),
19
+ size: z
20
+ .string()
21
+ .optional()
22
+ .describe("Image size or aspect ratio for supported edit models."),
19
23
  resolution: z
20
24
  .string()
21
25
  .optional()
@@ -24,11 +28,29 @@ export function registerEditImageTool(server, client) {
24
28
  .string()
25
29
  .optional()
26
30
  .describe("Image quality for supported models. GPT-Image 2 supports low, medium, high."),
31
+ output_format: z
32
+ .string()
33
+ .optional()
34
+ .describe("Image output format for supported models, for example png or webp."),
35
+ custom_resolution: z
36
+ .boolean()
37
+ .optional()
38
+ .default(false)
39
+ .describe("Use custom image resolution when the selected model supports it."),
27
40
  count: z.number().int().positive().optional().default(1).describe("Number of edits."),
28
41
  },
29
- }, async ({ model, image, prompt, resolution, quality, count }) => {
42
+ }, async ({ model, image, prompt, size, resolution, quality, output_format, custom_resolution, count, }) => {
30
43
  try {
31
44
  const resolvedModel = resolveModelForCommand("image_edit", model);
45
+ const resolvedResolution = resolveImageResolution(resolvedModel, resolution, size);
46
+ validateImageCatalogConstraints(resolvedModel, {
47
+ size,
48
+ resolution: resolvedResolution,
49
+ quality,
50
+ outputFormat: output_format,
51
+ count,
52
+ customResolution: custom_resolution,
53
+ });
32
54
  const response = await client.createImageBatch({
33
55
  items: [
34
56
  {
@@ -37,8 +59,11 @@ export function registerEditImageTool(server, client) {
37
59
  generationType: 8,
38
60
  prompt: normalizeGenerationPrompt(prompt),
39
61
  images: [image],
40
- resolution: resolveImageResolution(resolvedModel, resolution),
62
+ size,
63
+ resolution: resolvedResolution,
64
+ customResolution: resolveCustomResolutionValue(resolvedModel, Boolean(custom_resolution)),
41
65
  quality: resolveImageQuality(resolvedModel, quality),
66
+ outputFormat: output_format,
42
67
  count,
43
68
  },
44
69
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"edit-image.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/edit-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,MAAmD;IAEnD,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,gKAAgK;QAClK,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAC1E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC9D,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,EAAE,6CAA6C,CAAC;iBACrD,GAAG,CAAC,IAAI,EAAE,uDAAuD,CAAC;iBAClE,QAAQ,CAAC,oBAAoB,CAAC;YACjC,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;YACxF,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;YAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACtF;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;gBAC7C,KAAK,EAAE;oBACL;wBACE,YAAY,EAAE,EAAE;wBAChB,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;wBACtC,cAAc,EAAE,CAAC;wBACjB,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC;wBACzC,MAAM,EAAE,CAAC,KAAK,CAAC;wBACf,UAAU,EAAE,sBAAsB,CAAC,aAAa,EAAE,UAAU,CAAC;wBAC7D,OAAO,EAAE,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC;wBACpD,KAAK;qBACN;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,WAAW,CAAC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"edit-image.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/edit-image.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { resolveImageQuality, resolveImageResolution, resolveModelForCommand, } from "../../../core/model-catalog.js";
2
+ import { resolveCustomResolutionValue, resolveImageQuality, resolveImageResolution, resolveModelForCommand, validateImageCatalogConstraints, } from "../../../core/model-catalog.js";
3
3
  import { normalizeGenerationPrompt } from "../../../core/prompt.js";
4
4
  import { formatToolError, jsonContent } from "../../../core/response.js";
5
5
  import { batchCreateOutputSchema, normalizeBatchCreate } from "./shared.js";
@@ -24,11 +24,29 @@ export function registerGenerateImageTool(server, client) {
24
24
  .string()
25
25
  .optional()
26
26
  .describe("Image quality for supported models. GPT-Image 2 supports low, medium, high."),
27
+ output_format: z
28
+ .string()
29
+ .optional()
30
+ .describe("Image output format for supported models, for example png or webp."),
31
+ custom_resolution: z
32
+ .boolean()
33
+ .optional()
34
+ .default(false)
35
+ .describe("Use custom image resolution when the selected model supports it."),
27
36
  count: z.number().int().positive().optional().default(1).describe("Number of images."),
28
37
  },
29
- }, async ({ model, prompt, size, resolution, quality, count }) => {
38
+ }, async ({ model, prompt, size, resolution, quality, output_format, custom_resolution, count }) => {
30
39
  try {
31
40
  const resolvedModel = resolveModelForCommand("image_generate", model);
41
+ const resolvedResolution = resolveImageResolution(resolvedModel, resolution, size);
42
+ validateImageCatalogConstraints(resolvedModel, {
43
+ size,
44
+ resolution: resolvedResolution,
45
+ quality,
46
+ outputFormat: output_format,
47
+ count,
48
+ customResolution: custom_resolution,
49
+ });
32
50
  const response = await client.createImageBatch({
33
51
  items: [
34
52
  {
@@ -37,8 +55,10 @@ export function registerGenerateImageTool(server, client) {
37
55
  generationType: 6,
38
56
  prompt: normalizeGenerationPrompt(prompt),
39
57
  size,
40
- resolution: resolveImageResolution(resolvedModel, resolution, size),
58
+ resolution: resolvedResolution,
59
+ customResolution: resolveCustomResolutionValue(resolvedModel, Boolean(custom_resolution)),
41
60
  quality: resolveImageQuality(resolvedModel, quality),
61
+ outputFormat: output_format,
42
62
  count,
43
63
  },
44
64
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/generate-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,UAAU,yBAAyB,CACvC,MAAiB,EACjB,MAAmD;IAEnD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,wJAAwJ;QAC1J,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACrE,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,EAAE,6CAA6C,CAAC;iBACrD,GAAG,CAAC,IAAI,EAAE,uDAAuD,CAAC;iBAClE,QAAQ,CAAC,0BAA0B,CAAC;YACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YAC/F,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;YACxF,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;YAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;SACvF;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;gBAC7C,KAAK,EAAE;oBACL;wBACE,YAAY,EAAE,CAAC;wBACf,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;wBACtC,cAAc,EAAE,CAAC;wBACjB,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC;wBACzC,IAAI;wBACJ,UAAU,EAAE,sBAAsB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC;wBACnE,OAAO,EAAE,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC;wBACpD,KAAK;qBACN;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,WAAW,CAAC,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/generate-image.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { FreebeatApiClient } from "../../../services/freebeat-api.js";
3
- export declare function registerGenerateVideoTool(server: McpServer, client: Pick<FreebeatApiClient, "createVideoBatch">): void;
3
+ export declare function registerGenerateVideoTool(server: McpServer, client: Pick<FreebeatApiClient, "createVideoBatch" | "createUploadUrl" | "uploadToPreSignedUrl">): void;
@@ -1,11 +1,14 @@
1
1
  import { z } from "zod";
2
- import { resolveGenerateAudioValue, resolveModelForCommand, validateVideoGenerateOptions, } from "../../../core/model-catalog.js";
2
+ import { resolveGenerateAudioValue, resolveModelForCommand, resolveVideoAspectRatio, resolveVideoExtraParams, resolveVideoGenerationType, validateVideoGenerateOptions, } from "../../../core/model-catalog.js";
3
3
  import { normalizeGenerationPrompt } from "../../../core/prompt.js";
4
4
  import { formatToolError, jsonContent } from "../../../core/response.js";
5
+ import { UploadService } from "../../../services/upload-service.js";
6
+ import { detectImageMimeType, validateImageFile, validateImageMinimumDimensions, } from "../../../utils/file.js";
5
7
  import { batchCreateOutputSchema, normalizeBatchCreate } from "./shared.js";
6
8
  export function registerGenerateVideoTool(server, client) {
9
+ const uploadService = new UploadService(client);
7
10
  server.registerTool("generate_video", {
8
- description: "Create an Open RPC text-to-video batch. Recommended flow: list_models(type=video) -> get_model_help -> generate_video -> get_task_status using the returned batch_id.",
11
+ description: "Create an Open RPC video batch. Supports text, image, transition, and reference generation when the selected model supports them. Recommended flow: list_models(type=video) -> get_model_help -> generate_video -> get_task_status using the returned batch_id.",
9
12
  outputSchema: batchCreateOutputSchema,
10
13
  inputSchema: {
11
14
  model: z.string().min(1).describe("Video model id or API model key."),
@@ -15,38 +18,70 @@ export function registerGenerateVideoTool(server, client) {
15
18
  .min(1, "prompt must not be empty or whitespace only")
16
19
  .max(2000, "prompt must be at most 2000 characters after trimming")
17
20
  .describe("Video generation prompt."),
21
+ generation_type: z
22
+ .string()
23
+ .optional()
24
+ .default("text")
25
+ .describe("Generation type: text, image, transition, or reference."),
26
+ images: z
27
+ .array(z.string())
28
+ .optional()
29
+ .describe("Image URLs or local image paths for image, transition, or reference generation."),
18
30
  duration: z.number().int().positive().optional().describe("Video duration in seconds."),
19
31
  resolution: z.string().optional().describe("Video resolution, for example 720p."),
20
32
  aspect_ratio: z.string().optional().describe("Video aspect ratio, for example 16:9."),
33
+ style: z.string().optional().describe("Video style when supported by the selected model."),
21
34
  generate_audio: z
22
35
  .boolean()
23
36
  .optional()
24
37
  .default(false)
25
38
  .describe("Generate video audio when the selected model supports it."),
39
+ multi_clip: z
40
+ .boolean()
41
+ .optional()
42
+ .default(false)
43
+ .describe("Generate multiple clips when the selected model supports it."),
44
+ watermark: z
45
+ .boolean()
46
+ .optional()
47
+ .default(false)
48
+ .describe("Include a watermark when needed by the target account or environment."),
26
49
  },
27
- }, async ({ model, prompt, duration, resolution, aspect_ratio, generate_audio }) => {
50
+ }, async ({ model, prompt, generation_type, images, duration, resolution, aspect_ratio, style, generate_audio, multi_clip, watermark, }) => {
28
51
  try {
29
52
  const resolvedModel = resolveModelForCommand("video_generate", model);
53
+ const generationType = resolveVideoGenerationType(resolvedModel, generation_type ?? "text");
54
+ const imageInputs = images ?? [];
30
55
  validateVideoGenerateOptions(resolvedModel, {
31
56
  duration,
32
57
  resolution,
33
58
  aspectRatio: aspect_ratio,
59
+ style,
34
60
  generateAudio: generate_audio,
35
- });
61
+ multiClip: multi_clip,
62
+ }, generationType, imageInputs);
63
+ const resolvedImages = await resolveVideoImageInputs(uploadService, imageInputs, generationType);
64
+ const aspectRatio = resolveVideoAspectRatio(resolvedModel, aspect_ratio, generationType);
36
65
  const audio = resolveGenerateAudioValue(resolvedModel, Boolean(generate_audio));
66
+ const videoBatchItem = {
67
+ modelId: String(resolvedModel.modelId),
68
+ generationType,
69
+ prompt: normalizeGenerationPrompt(prompt),
70
+ images: resolvedImages,
71
+ duration,
72
+ resolution,
73
+ aspectRatio,
74
+ style,
75
+ audio,
76
+ generateAudio: audio,
77
+ watermark: watermark ? 1 : 0,
78
+ };
79
+ const extraParams = resolveVideoExtraParams(resolvedModel, Boolean(multi_clip));
80
+ if (extraParams) {
81
+ videoBatchItem.extraParams = extraParams;
82
+ }
37
83
  const response = await client.createVideoBatch({
38
- items: [
39
- {
40
- modelId: String(resolvedModel.modelId),
41
- generationType: 1,
42
- prompt: normalizeGenerationPrompt(prompt),
43
- duration,
44
- resolution,
45
- aspectRatio: aspect_ratio,
46
- audio,
47
- generateAudio: audio,
48
- },
49
- ],
84
+ items: [videoBatchItem],
50
85
  });
51
86
  return jsonContent(normalizeBatchCreate(response, "Video generation"));
52
87
  }
@@ -55,4 +90,35 @@ export function registerGenerateVideoTool(server, client) {
55
90
  }
56
91
  });
57
92
  }
93
+ async function resolveVideoImageInputs(uploadService, inputs, generationType) {
94
+ if (generationType === 1) {
95
+ return undefined;
96
+ }
97
+ const resolved = [];
98
+ for (const [index, input] of inputs.entries()) {
99
+ if (isProbablyUrl(input)) {
100
+ resolved.push(input);
101
+ continue;
102
+ }
103
+ validateImageFile(input);
104
+ validateImageMinimumDimensions(input, 300, 300);
105
+ const uploadedUrl = await uploadService.uploadLocalFile({
106
+ filePath: input,
107
+ keyPrefix: "agent/character",
108
+ contentType: detectImageMimeType(input),
109
+ keySuffix: String(index),
110
+ });
111
+ resolved.push(uploadedUrl);
112
+ }
113
+ return resolved;
114
+ }
115
+ function isProbablyUrl(value) {
116
+ try {
117
+ const url = new URL(value);
118
+ return url.protocol === "http:" || url.protocol === "https:";
119
+ }
120
+ catch {
121
+ return false;
122
+ }
123
+ }
58
124
  //# sourceMappingURL=generate-video.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-video.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/generate-video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,UAAU,yBAAyB,CACvC,MAAiB,EACjB,MAAmD;IAEnD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,uKAAuK;QACzK,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACrE,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,EAAE,6CAA6C,CAAC;iBACrD,GAAG,CAAC,IAAI,EAAE,uDAAuD,CAAC;iBAClE,QAAQ,CAAC,0BAA0B,CAAC;YACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACvF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACjF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACrF,cAAc,EAAE,CAAC;iBACd,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,2DAA2D,CAAC;SACzE;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE;QAC9E,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACtE,4BAA4B,CAAC,aAAa,EAAE;gBAC1C,QAAQ;gBACR,UAAU;gBACV,WAAW,EAAE,YAAY;gBACzB,aAAa,EAAE,cAAc;aAC9B,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,yBAAyB,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;YAEhF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;gBAC7C,KAAK,EAAE;oBACL;wBACE,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;wBACtC,cAAc,EAAE,CAAC;wBACjB,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC;wBACzC,QAAQ;wBACR,UAAU;wBACV,WAAW,EAAE,YAAY;wBACzB,KAAK;wBACL,aAAa,EAAE,KAAK;qBACrB;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,WAAW,CAAC,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generate-video.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/generate-video.ts"],"names":[],"mappings":"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"}
@@ -57,12 +57,19 @@ export function normalizeModel(model) {
57
57
  description: model.description,
58
58
  constraints: {
59
59
  aspect_ratios: model.constraints.aspectRatios,
60
+ sizes: model.constraints.sizes,
60
61
  resolutions: model.constraints.resolutions,
61
62
  durations: model.constraints.durations,
62
63
  styles: model.constraints.styles,
64
+ qualities: model.constraints.qualities,
65
+ output_formats: model.constraints.outputFormats,
66
+ counts: model.constraints.counts,
67
+ custom_resolution: model.constraints.customResolution,
63
68
  generate_audio: model.constraints.generateAudio,
64
69
  credits: model.constraints.credits,
70
+ generation_options: model.constraints.generationOptions,
65
71
  credit_options: model.constraints.creditOptions,
72
+ video_parameters: model.constraints.videoParameters,
66
73
  },
67
74
  };
68
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACvE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC1D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACpE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAChE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAC9D,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACvE,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACtF,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC,CACH;SACA,QAAQ,CAAC,oCAAoC,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACnE,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,QAAoC,EACpC,IAAY;IAEZ,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,QAAQ,CAAC,OAAO;QAC1B,YAAY,EAAE,QAAQ,CAAC,WAAW;QAClC,WAAW,EAAE,QAAQ,CAAC,UAAU;QAChC,cAAc,EAAE,QAAQ,CAAC,aAAa;QACtC,YAAY,EAAE,QAAQ,CAAC,WAAW;QAClC,gBAAgB,EAAE,QAAQ,CAAC,eAAe;QAC1C,wBAAwB,EAAE,QAAQ,CAAC,sBAAsB;QACzD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnC,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,IAAI,oDAAoD,QAAQ,CAAC,OAAO,oBAAoB;KACzG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,KAAK,EAAE,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACjD,YAAY,EAAE,KAAK,CAAC,WAAW;QAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,gBAAgB,EAAE,KAAK,CAAC,eAAe;QACvC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE;YACX,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY;YAC7C,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW;YAC1C,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS;YACtC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;YAChC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,aAAa;YAC/C,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO;YAClC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,aAAa;SAChD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAe,EAAE,KAAa;IAC7D,OAAO,aAAa,KAAK,IAAI,IAAI,YAAY,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/capabilities/media/tools/shared.ts"],"names":[],"mappings":"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"}
@@ -14,17 +14,35 @@ export interface StaticModelCatalogItem {
14
14
  description?: string;
15
15
  constraints: {
16
16
  aspectRatios: string[];
17
+ sizes: string[];
17
18
  resolutions: string[];
18
19
  durations: number[];
19
20
  styles: string[];
21
+ qualities: string[];
22
+ outputFormats: string[];
23
+ counts: number[];
24
+ customResolution: boolean;
20
25
  generateAudio: number[];
21
26
  credits: number[];
27
+ generationOptions: Array<{
28
+ generationType: number;
29
+ aspectRatios: string[];
30
+ resolutions: string[];
31
+ durationOptions: Array<{
32
+ resolution?: string;
33
+ durations: number[];
34
+ }>;
35
+ }>;
22
36
  creditOptions: Array<{
23
37
  resolution?: string;
24
38
  duration?: number;
25
39
  credits?: number;
26
40
  creditSec?: number;
27
41
  }>;
42
+ videoParameters: {
43
+ multiClip: boolean;
44
+ watermark: boolean;
45
+ };
28
46
  };
29
47
  }
30
48
  type CatalogResolver = {
@@ -36,13 +54,29 @@ export declare function listModels(kind: ModelKind): StaticModelCatalogItem[];
36
54
  export declare function getModelHelp(modelInput: string): string;
37
55
  export declare function resolveModelForCommand(command: ModelCommand, modelInput: string): StaticModelCatalogItem;
38
56
  export declare function createModelResolver(catalog: StaticModelCatalogItem[]): CatalogResolver;
57
+ export declare function validateImageCatalogConstraints(model: StaticModelCatalogItem, options: {
58
+ size?: string;
59
+ resolution?: string;
60
+ quality?: string;
61
+ outputFormat?: string;
62
+ count?: number;
63
+ customResolution?: boolean;
64
+ }): void;
39
65
  export declare function validateVideoGenerateOptions(model: StaticModelCatalogItem, options: {
40
66
  duration?: number;
41
67
  resolution?: string;
42
68
  aspectRatio?: string;
69
+ style?: string;
43
70
  generateAudio?: boolean;
44
- }): void;
71
+ multiClip?: boolean;
72
+ }, generationType?: number, imageInputs?: string[]): void;
73
+ export declare function resolveVideoAspectRatio(model: StaticModelCatalogItem, aspectRatio: string | undefined, generationType: number): string | undefined;
74
+ export declare function resolveVideoGenerationType(model: StaticModelCatalogItem, value: string): 0 | 1 | 2 | 3;
45
75
  export declare function resolveGenerateAudioValue(model: StaticModelCatalogItem, shouldGenerateAudio: boolean): 0 | 1 | undefined;
76
+ export declare function resolveVideoExtraParams(model: StaticModelCatalogItem, shouldGenerateMultiClip: boolean): {
77
+ generateMultiClip?: boolean;
78
+ } | undefined;
46
79
  export declare function resolveImageQuality(model: StaticModelCatalogItem, quality?: string): string | undefined;
47
80
  export declare function resolveImageResolution(model: StaticModelCatalogItem, resolution?: string, size?: string): string | undefined;
81
+ export declare function resolveCustomResolutionValue(model: StaticModelCatalogItem, shouldUseCustomResolution: boolean): 1 | undefined;
48
82
  export {};