Commit Graph

169 Commits

Author SHA1 Message Date
rpone 85e01c7671 docs: show optional package installation commands 2026-10-10 02:03:31 +08:00
rpone 8260cdc17d docs: clarify optional component and partner provider installation 2026-10-10 02:02:32 +08:00
kashorin 03dc6a5eb2 docs: add the 0.3 project migration guide 2026-10-09 22:28:54 +08:00
kashorin df3b506135 docs: align authoring guidance and migration notes with 0.3.1 2026-10-09 18:13:51 +08:00
kashorin f946760a3f docs: finish the 0.3 public documentation audit 2026-10-09 01:07:26 +08:00
kashorin aa07d1eb5e docs: align production guidance with 0.3 author model 2026-10-09 00:42:47 +08:00
kashorin 9c661820c5 docs: explain authored cues and Studio items 2026-10-09 00:35:27 +08:00
kashorin a4c25ea76b refactor: make narrative projection an explicit author relation 2026-10-08 15:42:44 +08:00
kashorin 91fd9328f5 docs: align production guidance with the 0.3 model 2026-10-08 14:38:45 +08:00
kashorin a54f7ee8cc docs: align public guidance with the 0.3 architecture 2026-10-07 20:45:22 +08:00
kashorin 3c9e635d01 docs: teach the 0.3 author model 2026-10-07 20:44:28 +08:00
Sharky Wang a2d13d535d feat(beatapi): serve the installed video and image models on BeatAPI (#331)
* 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.
2026-09-20 10:29:07 +08:00
kashorin a6f84f5564 feat(production): inspect frames and prepare retained performances 2026-09-19 06:50:37 +08:00
Sharky Wang c86239820d feat(wan): add the Wan 2.7 image models and serve them on Monid (#301)
* 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
2026-09-18 17:19:23 +08:00
Sharky Wang c7ace07a2d feat(provider-monid): serve MiniMax H3 (#286)
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.
2026-09-18 04:30:21 +08:00
Sharky Wang 6386639f2e feat(providers): add TokenDance, HiAPI, Pollo and Monid gateway Providers (#282)
* 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
2026-09-18 02:45:21 +08:00
panxyingyyi 02b37f0d02 feat(examples): add a project video Provider to the extension example (#250)
* 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>
2026-09-17 20:53:27 +08:00
kashorin 2bed7774e5 fix: preserve request fields and repair local preparation and file I/O (#278)
* 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
2026-09-17 20:53:18 +08:00
Lion ElJonson 9b10018cc8 docs: add the required endpoint argument to auth status examples
`hypit auth status` requires one Endpoint instance (the CLI parser calls
requiredPositional for status, login and logout alike), but four docs
examples omitted it, so copy-pasting them fails with "auth status requires
one Endpoint instance".

Use each page's already-established instance name: `hypihub.default` in
the quickstart (matching its `auth login hypihub.default` example) and
`media.local` in the runtime guide (matching the `doctor --endpoint
media.local` that follows).
2026-09-17 12:14:36 +08:00
kashorin c93f1506cb docs: unify Telegram links and bilingual test guidance 2026-09-17 03:31:02 +08:00
kashorin 2aa8dde48c fix(renderer): own browser preparation, source selection and capture lifecycle 2026-09-17 02:50:42 +08:00
kashorin c607486fcc docs: separate Agent entry points from execution-service partners 2026-09-15 22:43:01 +08:00
kashorin 02c3f4e7d2 docs(skill): clarify first-use choices and separate update channels 2026-09-15 22:20:29 +08:00
kashorin 4af8ae1b1e release: prepare 0.1.6 and align production guidance 2026-09-14 23:29:54 +08:00
kashorin d1168c1ba2 feat(studio): load interface languages from explicit JSON packs 2026-09-14 23:29:27 +08:00
kashorin 870fc33bc4 refactor: isolate build execution and complete production workflow 2026-09-14 18:48:45 +08:00
kashorin b679e32192 refactor: unify adaptive timeline and presentation composition
Place prepared Takes on an independent Timeline with gaps and overlaps. Present picture, sound and captions through explicit Use rules while preserving source timing and project-authored styles.

Unify Companion bands, parameter ownership and source writeback in Studio. Migrate components, examples and authoring guidance, remove retired Speech/Semantic Track interfaces, and retain protocol identifiers at @1.

Validation: repository suite (786 tests; six sandbox-blocked tests passed on permitted rerun), 43 Studio tests after audit fixes, TypeScript, public declarations, four example-package builds, chat Source check and npm file inventory.
2026-09-13 01:01:47 +08:00
kashorin b2bd290172 docs: retain current public Companion guides after history cleanup 2026-09-11 18:19:28 +08:00
rpone 78a642df05 docs: give each page one title and put its video under the heading
Every page carried a frontmatter `title` and repeated it as a body `# `, which
the site renders as two headings with two permalinks. The heading text matched
the frontmatter on 41 of the 43 pages; on the two quickstarts it did not, so
"Make a video with your Agent" and "和 Agent 一起制作视频" give way to the
titles already in their frontmatter.

Each step's video now sits directly under that step's heading rather than after
its prose, and the avatars link keeps a blank line beneath it.
2026-09-10 21:22:19 +08:00
rpone ed71457559 docs(guide): add frontmatter to the skill page
HypiHub's documentation sync reads the page title and description from
YAML frontmatter, as every other guide page provides.
2026-09-10 05:32:30 +08:00
kashorin bb1af2996f feat(distribution): publish under @hypit/hypit and unify studio command 2026-09-10 04:30:13 +08:00
kashorin 4c7e075252 docs: clarify workspace layout and browser render tests 2026-09-10 04:00:59 +08:00
kashorin b8e2a9b240 docs: integrate refreshed quickstart videos and production guidance 2026-09-10 02:11:41 +08:00
kashorin e90b070c33 feat(composition): support authored clocks alongside semantic timelines 2026-09-09 23:38:46 +08:00
kashorin 05cf411dde docs(skill): clarify direction, paid scope and package sharing
Put material quality in prompt, pronunciation, voice and performance direction; keep composition review focused on arrangement. Explain capability setup, commission-wide spending authority and useful progress updates. Document owner-scoped component sharing and consolidate the production design record.
2026-09-09 17:31:37 +08:00
kashorin 1f203a4f9f refactor(composition): separate semantic performance from visual layout
Speech publishes semantic timing and original audio. Media Performance and project components consume the prepared material, preserving source offsets across Takes while controlling their own framing and motion.

Add explicit renderer programs for coordinated HTML/CSS/JavaScript scenes, with typed media children, backdrop filtering and blending. Remove stand-in and estimated-take preview paths, migrate Sources and documentation, and demonstrate a Moment-driven video-to-diagram handoff.
2026-09-09 17:30:30 +08:00
kashorin 88c3deab5b merge: integrate upload lifecycle fixes and restore Quickstart demonstrations 2026-09-08 22:06:16 +08:00
kashorin 34b2229e66 refactor: ground reference understanding in timed frames and semantic intent 2026-09-08 22:06:16 +08:00
kashorin 59b17e777b feat(runtime): expose provider pricing and request support 2026-09-08 17:20:20 +08:00
kashorin b76359fe20 docs: complete the entrusted video production skill 2026-09-07 04:34:54 +08:00
kashorin f258b9923b feat(authoring): load reusable sources from installed packages 2026-09-07 04:25:49 +08:00
kashorin 41644acb58 feat(speech): separate voice design from voice clone
Replace the vague MiMo TTS surface with explicit Voice Design, Voice Reference and Voice Clone capabilities. Keep model semantics in mimo-speech, provider transport in Xiaomi MiMo and HypiHub, and update examples to reuse the same accepted voice reference.
2026-09-07 04:25:49 +08:00
kashorin f15b1d46f8 refactor(studio): make authoring execution runtime-owned 2026-09-07 04:25:49 +08:00
kashorin 1d4124aac7 refactor: make planning and observation boundaries explicit 2026-09-04 21:36:38 +08:00
kashorin 293ccd177d refactor(runtime): model shared limits as capacity, not queues 2026-09-04 21:12:22 +08:00
kashorin 402c41cabb fix(runtime): Vertex is honest about timeouts, model ids and reachability; pools conflict at doctor time
Vertex: requestTimeoutMs now bounds every request (it was accepted and
ignored), the capability-to-model map fails closed, doctor asks Vertex for
each declared model with the configured project so a disabled API or an
unreachable model is reported with Vertex's own message before the first
paid call, and the README finally shows the Profile fragment with both
required CredentialRefs. Two Endpoints that share a pool but size it
differently are reported by doctor instead of failing inside a Build. The
starter Profile names pools by role like the examples do, and the KIE
README's rejected instance key is corrected.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 20:36:45 +08:00
kashorin 0df5e1ff9b feat(runtime): Profile bindings decide contested capabilities; one resolver for plan, invoke and Build
Providers declare everything they can do and never hide a capability:
HypiHub's audio:false flag is gone. When several selected Endpoints offer
the same capability, the Profile's bindings name the one that serves it,
keyed by name@version#capability. plan, creation-time invoke and the Build
resolve through the same EndpointRegistry with the same bindings; doctor
reports a contested capability without a binding (error when a Run demands
it, warning otherwise) and a binding to an Endpoint that does not offer the
capability. Unknown Profile keys are listed together, and the retired
nested-runtime Profile shape gets a migration message.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 20:21:59 +08:00
rponeawa e14c7bd998 docs: sync quickstart with hypit skill (#170) 2026-09-04 16:19:21 +08:00
kashorin 407c77ffac refactor(cli): dismantle reference-video-tools into hypit media and vocabulary
Delete packages/reference-video-tools: the route/revision/variant state
machines, pending_observations, the check gates, layout_accept,
render_element (a Build outside Build), render_previews (posters are
designed, not rendered) and the per-video global cache tree. What an
agent needs outside a Build survives as dumb local commands in video-cli:
hypit media probe/cut/frames/tile/shots/fetch and hypit vocabulary.

Drop the four-word cue rule from @hypit/script; cue breaks are craft,
fit is the caption component's own knowledge. @hypit/yt-dlp writes to
the file the caller names. Prompts and measured parameters are kept
verbatim in .agents/development/observation-knowledge.md for the Skill.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 06:09:43 +08:00
kashorin e451341f2e refactor(estimate): durations are author literals, measured with hypit measure
estimate:Speech leaves the Author Surface and the Build graph. A duration
is the author's decision, written as a literal on the element that needs
it; the graph computes none, so a Build plan is complete before it starts.

- @hypit/estimate keeps only the measurement library and the
  SpeechEstimatePolicy type; its Surface, Producer and fragment are gone.
  Policies can be read from an SVS Recipe or from attributes.
- hypit measure joins the creation tools: it counts a Segment's
  pronunciation units from the compiled author source (or --text) at the
  chosen delivery policy and prints the seconds to write as the literal.
- seedance: duration is a literal only; the DurationProgram deferral, its
  type, producers, fragment and schema are removed.
- media:StillVideo: duration is a literal in seconds, published as an
  ordinary SpeechDuration Record for its plan step.
- estimated:SemanticTake owns its policy, inline or as policy={recipe},
  and publishes it as <id>.policy.
- preview-mock reads program duration from SpeechDuration Records and the
  duration port of generation requests; compiler-node's plan-time
  pre-evaluation of estimate is removed.
- The 13 example sources and the media-track preview carry the seconds
  hypit measure produced for each Segment; the quickstart, styles and
  packages guides and the Skill's twelve passages describe the literal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 03:27:31 +08:00