@mrgoonie/multix 1.0.7 → 1.0.8

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
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.8](https://github.com/mrgoonie/multix-cli/compare/v1.0.7...v1.0.8) (2026-10-11)
9
+
10
+
11
+ ### Fixed
12
+
13
+ * **mcp:** tighten Worker duration/resolution defaults and Cloudflare video errors ([#120](https://github.com/mrgoonie/multix-cli/issues/120)) ([e082feb](https://github.com/mrgoonie/multix-cli/commit/e082feb3c1b3d0b88c96aa0a837b903759d6db00))
14
+
8
15
  ## [1.0.7](https://github.com/mrgoonie/multix-cli/compare/v1.0.6...v1.0.7) (2026-10-11)
9
16
 
10
17
 
package/README.md CHANGED
@@ -697,7 +697,7 @@ CLI.
697
697
  `MULTIX_MCP_ALLOWED_MODELS`, `MULTIX_MCP_MAX_OUTPUTS`,
698
698
  `MULTIX_MCP_MAX_VIDEO_SECONDS` (also sent as `min(5, cap)` when a caller
699
699
  omits `duration`), `MULTIX_MCP_ALLOWED_RESOLUTIONS` (default
700
- `480p,720p,1080p`), `MULTIX_MCP_ALLOWED_ORIGINS` (browser origins, with
700
+ `480p,720p,768p,1080p`), `MULTIX_MCP_ALLOWED_ORIGINS` (exact browser origins, with
701
701
  CORS), and the approximate per-IP rate limiter. JSON-RPC batches are
702
702
  rejected.
703
703
 
package/dist/cli.js CHANGED
@@ -259,8 +259,9 @@ function buildModelInput(spec, requests, base = {}) {
259
259
  }
260
260
  const field = pickField(spec, req);
261
261
  if (!field) {
262
+ const hint = /^(--|\[)/.test(req.flag) ? ` Use \`multix atlas run ${spec.model} --input '{...}'\` for model-specific fields.` : "";
262
263
  throw new ValidationError(
263
- `Model ${spec.model} does not accept ${req.flag}. Its inputs: ${listInputs(spec)}. Use \`multix atlas run ${spec.model} --input '{...}'\` for model-specific fields.`
264
+ `Model ${spec.model} does not accept ${req.flag}. Its inputs: ${listInputs(spec)}.${hint}`
264
265
  );
265
266
  }
266
267
  const prop = spec.properties[field];
@@ -3952,12 +3953,31 @@ function videoHeaders(config, opts) {
3952
3953
  ...opts.wait ? { Prefer: "wait" } : {}
3953
3954
  };
3954
3955
  }
3955
- function send(opts, url, init) {
3956
- const withTimeout = {
3957
- ...init,
3958
- signal: AbortSignal.timeout(opts.timeoutMs ?? DEFAULT_TIMEOUT_MS)
3959
- };
3960
- return fetchSameOrigin(url, withTimeout, opts.fetch);
3956
+ function isAbort(cause) {
3957
+ const name = cause?.name;
3958
+ return name === "TimeoutError" || name === "AbortError";
3959
+ }
3960
+ function cloudflareFetchFailure(cause, url, timeoutMs) {
3961
+ const origin = new URL(url).origin;
3962
+ if (cause instanceof HttpError) {
3963
+ return new HttpError(cause.status, cause.snippet, origin, cause.retryAfterMs);
3964
+ }
3965
+ if (cause instanceof MultixError) return cause;
3966
+ if (isAbort(cause)) {
3967
+ return new HttpError(0, `request timed out after ${timeoutMs / 1e3}s`, origin, void 0, {
3968
+ cause
3969
+ });
3970
+ }
3971
+ return toFetchError(cause, origin, { provider: "Cloudflare" });
3972
+ }
3973
+ async function send(opts, url, init) {
3974
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
3975
+ const withTimeout = { ...init, signal: AbortSignal.timeout(timeoutMs) };
3976
+ try {
3977
+ return await fetchSameOrigin(url, withTimeout, opts.fetch);
3978
+ } catch (cause) {
3979
+ throw cloudflareFetchFailure(cause, url, timeoutMs);
3980
+ }
3961
3981
  }
3962
3982
  function parseCloudflareVideoPrediction(value) {
3963
3983
  if (!value || typeof value !== "object") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrgoonie/multix",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "AI multimodal CLI — OpenAI, Gemini, MiniMax, OpenRouter, Leonardo, BytePlus, ElevenLabs, fal.ai, Atlas Cloud, Replicate, HeyGen, ffmpeg, ImageMagick, doc-to-md",
5
5
  "type": "module",
6
6
  "bin": {
package/skill/SKILL.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: multix
3
3
  description: AI multimodal CLI — generate and edit images (OpenAI, Codex driver, Gemini Nano Banana, Imagen, MiniMax, OpenRouter, Leonardo, BytePlus Seedream, Cloudflare Workers AI FLUX.1 Schnell, fal.ai FLUX, Replicate FLUX), generate video (Gemini Veo, MiniMax Hailuo, OpenRouter via Veo/Seedance/Kling, Leonardo via Motion/Veo/Kling/Hailuo/Seedance/LTX, BytePlus Seedance, Cloudflare AI Gateway via Replicate, fal.ai queue models, Replicate direct API models incl. P-Video, HeyGen Video Agent and scripted avatar videos), video translation and lipsync (HeyGen), TTS/STT/music (OpenAI, Gemini Flash TTS incl. Gemini 3.8 with delivery-style control, MiniMax, Cloudflare Workers AI MeloTTS, ElevenLabs), 3D models (BytePlus Hyper3D/Hitem3d), analyze/transcribe media, convert documents to Markdown, optimize media via ffmpeg/ImageMagick, and self-update the CLI. Use whenever the user wants to create, edit, or transform images/video/audio/3D/documents from a CLI, mentions any of: OpenAI, Codex image driver, image-to-image, i2i, image edit, watercolor/cyberpunk style transfer, reference image, OpenRouter, Nano Banana, Flux, Seedream, Veo, Hailuo, Seedance, Kling, Cloudflare Workers AI, AI Gateway, fal.ai, Atlas Cloud, Replicate, replicate.com models, Replicate predictions, HeyGen, avatar video, talking head, Video Agent, video translation, dubbing, lipsync, video generation, text-to-video, image-to-video, i2v, ElevenLabs voice cloning, updating/upgrading multix, or asks for batch media optimization.
4
- version: 1.0.7 # x-release-please-version
4
+ version: 1.0.8 # x-release-please-version
5
5
  ---
6
6
 
7
7
  # multix — AI Multimodal CLI
@@ -479,7 +479,8 @@ local files), supports only Replicate, Atlas Cloud, HeyGen, and Cloudflare
479
479
  video, and accepts only public `https://` image URLs. Check `limits` from
480
480
  `multix_list_providers` before a video call: `duration` above
481
481
  `max_video_seconds` or a `resolution` outside `allowed_resolutions` is
482
- rejected, and an omitted `duration` becomes `default_video_seconds`.
482
+ rejected, and an omitted `duration` becomes `default_video_seconds` (on Atlas
483
+ Cloud, the model's own default when it is within `max_video_seconds`).
483
484
 
484
485
  ## Security & scope
485
486