* feat(plugin): add MiniMax-H3 /v2 video generation to the hailuo task plugin
MiniMax-H3 speaks a different contract from the other Hailuo models, so the
hailuo task plugin now branches on the upstream model instead of adding a Go
adaptor:
- submit builds /v2/video_generation with a multimodal `content` array
(text, first/last frame images, reference video/audio, or a full
`metadata.content` passthrough), an explicit `ratio`, and 768P/2K
resolutions; `metadata.callback_url` and `metadata.aigc_watermark` pass
through
- query uses /v2/query/video_generation/{task_id} and parses the
`{"task": {...}}` envelope, falling back to the /v1 shapes for every other
model
- the /v2 result is a public CDN URL, so its artifact is proxied
credentialless instead of through /v1/files/download
- request bounds (duration 4-15, resolution 768P/2K, ratio whitelist, at most
2 frame images and 9/3/3 reference images/videos/audios) are enforced while
the request body is built, which the host runs during validation, so an
out-of-range duration is rejected with a 400 before it can become a billing
multiplier
- duration and resolution are reported as usage facts only. Like the rest of
this plugin, extractUsage returns no billing ratios, so per-call pricing is
flat and 2K/duration pricing is expressed through the model's tiered billing
expression over those facts.
Query hooks are driver hooks and are documented to receive `ctx.model` and
`ctx.upstreamModel`, but polling has no relay info and never populated them.
The polling and realtime-fetch call sites now carry the persisted task model
properties and the plugin adaptor maps them onto the query context, with
`upstreamModel` falling back to the origin name for tasks submitted without a
channel mapping.
* fix(plugin): validate Hailuo H3 requests and errors
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| authz | Loading commit data... | |
| passkey | Loading commit data... | |
| audio.go | Loading commit data... | |
| auth_cleanup.go | Loading commit data... | |
| auth_session.go | Loading commit data... | |
| auth_session_test.go | Loading commit data... | |
| auth_token.go | Loading commit data... | |
| auth_token_test.go | Loading commit data... | |
| billing.go | Loading commit data... | |
| billing_session.go | Loading commit data... | |
| billing_usage.go | Loading commit data... | |
| channel.go | Loading commit data... | |
| channel_affinity.go | Loading commit data... | |
| channel_affinity_template_test.go | Loading commit data... | |
| channel_affinity_usage_cache_test.go | Loading commit data... | |
| channel_select.go | Loading commit data... | |
| channel_select_auto_groups_test.go | Loading commit data... | |
| channel_select_test.go | Loading commit data... | |
| codex_channel_models.go | Loading commit data... | |
| codex_credential_refresh.go | Loading commit data... | |
| codex_credential_refresh_task.go | Loading commit data... | |
| codex_models.go | Loading commit data... | |
| codex_oauth.go | Loading commit data... | |
| codex_wham_usage.go | Loading commit data... | |
| convert.go | Loading commit data... | |
| convert_test.go | Loading commit data... | |
| download.go | Loading commit data... | |
| epay.go | Loading commit data... | |
| error.go | Loading commit data... | |
| error_test.go | Loading commit data... | |
| file_decoder.go | Loading commit data... | |
| file_service.go | Loading commit data... | |
| funding_source.go | Loading commit data... | |
| group.go | Loading commit data... | |
| group_auto_groups_test.go | Loading commit data... | |
| http.go | Loading commit data... | |
| http_client.go | Loading commit data... | |
| http_client_transport_test.go | Loading commit data... | |
| http_transport_policy.go | Loading commit data... | |
| http_transport_sharded.go | Loading commit data... | |
| image.go | Loading commit data... | |
| log_info_generate.go | Loading commit data... | |
| midjourney.go | Loading commit data... | |
| notify-limit.go | Loading commit data... | |
| openai_chat_responses_compat.go | Loading commit data... | |
| openai_chat_responses_mode.go | Loading commit data... | |
| protected_fetch_client.go | Loading commit data... | |
| protected_fetch_client_test.go | Loading commit data... | |
| quota.go | Loading commit data... | |
| quota_saturation_test.go | Loading commit data... | |
| rankings.go | Loading commit data... | |
| request_converter.go | Loading commit data... | |
| response_converter.go | Loading commit data... | |
| return_path.go | Loading commit data... | |
| return_path_test.go | Loading commit data... | |
| sensitive.go | Loading commit data... | |
| str.go | Loading commit data... | |
| subscription_reset_task.go | Loading commit data... | |
| system_instance.go | Loading commit data... | |
| system_task.go | Loading commit data... | |
| system_task_test.go | Loading commit data... | |
| task.go | Loading commit data... | |
| task_artifact_access.go | Loading commit data... | |
| task_artifact_access_test.go | Loading commit data... | |
| task_artifact_store.go | Loading commit data... | |
| task_artifact_store_test.go | Loading commit data... | |
| task_billing.go | Loading commit data... | |
| task_billing_test.go | Loading commit data... | |
| task_plugin_audit.go | Loading commit data... | |
| task_plugin_view.go | Loading commit data... | |
| task_plugin_view_test.go | Loading commit data... | |
| task_polling.go | Loading commit data... | |
| task_polling_test.go | Loading commit data... | |
| text_quota.go | Loading commit data... | |
| text_quota_test.go | Loading commit data... | |
| tiered_settle.go | Loading commit data... | |
| tiered_settle_test.go | Loading commit data... | |
| token_counter.go | Loading commit data... | |
| token_estimator.go | Loading commit data... | |
| tokenizer.go | Loading commit data... | |
| usage_helpr.go | Loading commit data... | |
| user_notify.go | Loading commit data... | |
| violation_fee.go | Loading commit data... | |
| waffo_pancake.go | Loading commit data... | |
| webhook.go | Loading commit data... |