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.
The example profiles named every Endpoint instance after the project
(hypihub.hypit-podcast, media.football-ranking, ...), which reads as if
each project had its own HypiHub. An Endpoint is where work runs and whose
account it uses, not which video it serves, and the credential behind
HypiHub is the machine-wide hypihub.oauth entry regardless of the name.
Use the same instance names as `hypit runtime init` and the Skill:
hypihub.default, media.local, hyperframes.local, kie.default,
whisperx.local. Only the keys change.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The examples had drifted from the packages they import:
- gpt:Image publishes its picture under the `.image` port, but every
Reference, StillVideo source, emoji placeholder/icon and ranking Item
icon edge still named the bare element id, so plan stopped at
"cannot resolve" or "has the wrong Type". The gpt-image README carried
the same stale form; it now matches the package's own example.
- The four interview sources used <gpt:Image> without importing
@hypit/gpt-image.
- The three HypiHub-first profiles (interview, podcast, ranking-football)
bound whisperx-alignment twice, to HypiHub and to the local WhisperX
Provider, which the registry reports as ambiguous. The local Endpoint is
removed there; the KIE-based ranking sub-projects keep it because it is
their only alignment Provider.
All 25 example Runs now plan with their Runtime Profiles, with no
ambiguous or unresolved capability.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>