The English and Chinese images pages were the only place in the repository linking to a documentation page from the site root. Every other cross-reference is relative. A root-relative link also breaks when the page is read on GitHub, where it resolves to github.com/guide/runtime.
* fix(studio): serve composition material in the ranges a media element asks for
The material route advertised accept-ranges and answered every request with
the whole resource. A media element that asks for the tail index of an MP4
waits for the entire file before it can show a frame: measured 407 ms against
70 ms on a 124 MB source, and the full transfer time when the source arrives
slowly.
Reuse requestedByteRange, which the artifact route on the same server already
uses, and answer 206 with content-range, or 416 when the range is outside the
resource. A ranged response now takes a view of the material rather than
copying the whole resource per request.
* feat(beatapi): serve the installed video and image models on BeatAPI
`@hypit/provider-beatapi` posts one task to `https://api.beatapi.io` with a
Bearer API key, polls `GET /v1/tasks/{task_id}` until it succeeds, and stores
every entry of `output.media` in the current Build. It maps the nine models the
Distribution already describes: the four Seedance variants, MiniMax H3, Grok
Imagine 1.5, GPT Image 2 and both Nano Banana models. It adds no model package.
One BeatAPI alias serves every input mode, so the request shape alone decides
which arrays travel. The opening and closing frames travel as one ordered
`images` array, which a wire mapping cannot write from two ports, so routes.ts
folds `first_frame` and `last_frame` into it.
Seven service limits are reported as unsupported before any reference is
uploaded: Seedance has no web-search field and `seedance-2-mini` no generated
audio, where an authored `false` is dropped and an authored `true` refused;
Seedance 2 does not render 1080p with reference images; Seedance 2.5 takes 4 to
30 seconds rather than an automatic length; MiniMax H3 orders its two frames
first then last; Grok Imagine 1.5 accepts one image at 1080p; GPT Image 2 has no
background field; and Nano Banana 2 takes ten references and four fewer ratios.
Nano Banana 2 spells its JPEG output `jpeg`.
References are uploaded to `POST /v1/files` and travel as the returned HTTPS URL,
within the service's own types and sizes: 50 MB for PNG/JPEG/WebP images and
MP3/WAV/AAC/M4A audio, 100 MB for MP4/MOV video. BeatAPI documents no data URLs.
Seedance's `person-reference` declaration is accepted and not transmitted, since
BeatAPI's task body has no field for it.
The documented request bodies for Seedance text and multimodal modes, MiniMax
frame pairs, Grok references, GPT Image 2 and both Nano Banana models compile to
BeatAPI's published examples.
* feat(wan): add the Wan 2.7 image models and serve them on Monid
`@hypit/wan@1` carries two exact models, `wan-2.7-image` and
`wan-2.7-image-pro`. Both take a prompt of up to 5,000 characters, up to nine
reference images, and a resolution band; the Pro variant adds 4K. `count`
renders up to four pictures, or names the ceiling of an image set, where the
model chooses how many of up to twelve it returns. An image set shapes a
storyline the way extended reasoning shapes a single picture, so the two are not
stated together.
The model takes no aspect ratio: with references present the output follows the
last one, and a prompt-only request renders at the band's own framing. It reads
exclusions from the prompt rather than a negative-prompt field. The endpoint's
custom colour palette and per-image bounding boxes have no representation in the
port vocabulary, which carries scalars and media rather than object arrays, so
the package declares neither.
`@hypit/provider-monid` serves both through Monid's `alibaba` endpoints. Its
result path previously assumed one video: routes now name their result type and
collection downloads every returned file, so an image set arrives as a set.
Two service limits are reported before any reference is resolved: 4K renders
from a prompt alone, and a request renders at most four pictures outside an
image set.
The request bodies for text-to-image, reference editing, image sets and Pro 4K
validate against the endpoints' published input schemas.
* chore: refresh the lockfile for @hypit/wan
Monid relays MiniMax's `/v1/video/minimax-h3` alongside the ByteDance Seedance
endpoints this Provider already mapped. It takes the same role-tagged ModelArk
`content` array, names its model in the body, and carries neither the
`generate_audio` nor the `web_search` field the Seedance endpoints take.
Monid addresses an endpoint by provider and path, so each mapping now carries
the provider that relays it rather than every run assuming `bytedance`.
Three differences from the Seedance endpoints are handled at the route:
- `resolution` is required by the endpoint while the model's port is optional,
so an unstated resolution is sent at 2K, matching the HypiHub Provider.
- The endpoint takes no adaptive ratio for text-to-video, while frame mode
resolves the framing from the uploaded image and reference-to-video defaults
to adaptive. A text-to-video request stating no aspect ratio is reported
unsupported before any reference is resolved; the other two modes send
`adaptive`.
- H3 returns its video at `content.url` rather than the ModelArk `video_url`.
The request bodies for all four modes validate against the endpoint's published
input schema.
* feat(providers): add TokenDance, HiAPI, Pollo and Monid gateway Providers
Each package maps the installed Seedance, Seedream, MiniMax H3, GPT Image,
Nano Banana and Grok Imagine models that the service offers onto the request
protocol that service documents, with an API key credential and no pricing
reader. Service input limits are reported through supports() before any
reference is resolved. Seedance person-reference declarations are accepted and
not transmitted, since none of these APIs carries such a field; the skill and
quickstart state that rule.
* docs(providers): state that Seedance rejects real human faces on TokenDance, HiAPI and Monid
* feat(providers): upload MiniMax inputs through TokenDance's file API and enforce documented inline media limits
* docs(skill): rewrap the Provider paragraphs
* docs: list the bundled TokenDance, HiAPI, Pollo and Monid Providers on the service page
* docs(skill): keep the HypiHub recommendation as written; point bundled partner Providers at the service page
* docs(skill): drop the person-reference note; Provider READMEs state it
* fix(providers): strip trailing base URL slashes without a regular expression
* docs(skill): restore the original text and add one pointer to the partner Providers page
* docs(skill): point at partner Providers only once the user has chosen one
* docs(skill): consult the partner page when the user names a partner service
* docs(skill): offer HypiHub or a partner API from the service page when a credential is needed
* feat(examples): add a project video Provider to the extension example
The project Provider example only demonstrated an image request, so the
shape most third-party video services need had no worked reference: a
wider reference vocabulary (images, videos, audio and first/last frames,
each role mapping to its own wire field) and a result delivered through a
separate collection step after polling.
Add `packages/provider-videos` beside `provider-images`, implementing
`@hypit/seedance@1#seedance-2-mini` against the same illustrative service
protocol. It maps every port the Model declares, with `itemObject` for the
ports carrying the optional `personReference` classification and `url` for
the single-item frame ports.
The service renders a narrower band than the Model vocabulary allows —
720p up to 10 seconds, where the Model admits 480p/720p and 4–15 seconds.
That difference stays at the Endpoint boundary: `supports` reports it so
`plan` refuses the request with a reason instead of editing the shared
Model or silently narrowing the author's request.
The lifecycle test asserts the mapping against the Model's own port table
(`assertMappingCoversPorts`), then walks upload, submission, receipt
retention, a failed remote task and collection without a paid request. The
coverage assertion is verified to reject both a dropped media port and one
that does not resolve to a URL.
Also extend the example README, the Provider guide in both languages and
the environment Skill reference to describe the video request shape and
the three-action remote task lifecycle.
Verified from the packed tarball installed outside the checkout: the
package builds with the user's own tsc, both Endpoints load and `plan`
binds the Seedance capability to the project Provider.
* fix(example): carry first and last frame person-reference flags
---------
Co-authored-by: ranlei <ranlei@users.noreply.github.com>
Co-authored-by: kashorin <145269744+overlordkim@users.noreply.github.com>
* fix(generation): refuse supplied media fields a provider cannot carry
* fix(media): probe selected tools in their execution environment
* fix(credentials): use native file replacement across processes
* fix(runtime): distinguish tool preparation from process startup
* fix(cli): bootstrap from the physical distribution directory
The Chinese page splits the "Build workflow" intro into "0. Prepare
dependencies on demand" and "Keeping a real video project outside the
Hypit checkout", while the English page kept the same material flat. The
Chinese page also carries a `.gitignore` suggestion, the shared asset
library note and the read-only archive commands note that the English
page lacked.
Bring the English page to the same structure and content so the two
languages stay side by side.