@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 +7 -0
- package/README.md +1 -1
- package/dist/cli.js +27 -7
- package/package.json +1 -1
- package/skill/SKILL.md +3 -2
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)}
|
|
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
|
|
3956
|
-
const
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3960
|
-
|
|
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.
|
|
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.
|
|
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
|
|