* 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>
All eight example Profiles selected `@hypit/credential-store-os`, which opens
only on macOS and Windows, so the flagship examples could not authenticate on
Linux without the reader editing the Profile first. Selecting the portable file
Store instead would have moved the problem the other way, storing an unencrypted
document on hosts that have a locked keychain to offer.
`@hypit/credential-store-platform` answers to the name `platform` everywhere and
keeps each credential where its platform keeps credentials: the user's keychain
or Credential Locker where one exists, and an owner-private file where none does.
It delegates rather than reimplements, so the backing store keeps its own rules
and either can still be selected by name. Its file fallback uses the same default
directory as `@hypit/credential-store-file`, so a host without a locker finds the
credential it already stored when a Profile switches between them.
`file`, `os` and `env` remain selectable, and nothing migrates between stores: the
choice is made once per host.