ci(publish): publish @hyperframes/sdk to npm#1587
Conversation
The SDK is version-bumped by scripts/set-version.ts (it's in the PACKAGES list) but was never added to the publish_pkg list in publish.yml — so @hyperframes/sdk@0.6.112 sits on the version line yet is absent from npm (404), while core/player/engine/etc. all shipped at 0.6.112. Add the missing publish call so the SDK ships with every release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
miga-heygen
left a comment
There was a problem hiding this comment.
Clean, surgical fix. One line, right where it belongs. I verified all the claims:
-
set-version.tsalready includes SDK — confirmed at line 33:"packages/sdk". The SDK rides the shared version line, so it's been getting bumped without being published. Ghost versions on npm. -
Placement is correct —
@hyperframes/sdkdepends on@hyperframes/core("@hyperframes/core": "workspace:*"in its package.json). Publishing it immediately aftercoreensures the dependency is on npm before the SDK hitspnpm publish. Good sequencing. -
SDK's
package.jsonis publish-ready —publishConfig.access: "public",files,main,types, conditional exports withdist/paths all present. No blockers. -
verify-packed-manifests.mjsalready covers it — auto-discoverspackages/*, so the SDK's packed manifest is already validated in CI. No gap there. -
Idempotent backfill plan — the
publish_pkgfunction checksnpm view "${name}@${VERSION}" versionbefore publishing and skips already-published packages. Theworkflow_dispatchbackfill described in the PR body is safe; only the missing SDK version gets pushed.
No issues found. The fix is minimal, correctly ordered, and every supporting claim checks out.
LGTM — ready for stamp.
— Miga
james-russo-rames-d-jusso
left a comment
There was a problem hiding this comment.
Reviewed at HEAD 575ff13a.
Verdict: LGTM, stamp-ready.
Independently verified every claim in the PR body:
- ✅ Diff is exactly
+publish_pkg "@hyperframes/sdk" "@hyperframes/sdk"at.github/workflows/publish.yml:128, placed right after@hyperframes/core(correct — SDK depends on core perpackages/sdk/package.jsondependencies). - ✅
@hyperframes/sdkis genuinely a 404 on the npm registry — confirmed vianpm view @hyperframes/sdk versionsreturningE404 Not Found - GET https://registry.npmjs.org/@hyperframes%2fsdk. No version of the SDK has ever shipped, despiteset-version.tsPACKAGES list atscripts/set-version.tsincluding"packages/sdk". - ✅ Idempotency claim holds.
publish_pkgshell function atpublish.yml:108-126runsnpm view "${name}@${VERSION}" version >/dev/null 2>&1and returns 0 (skipping with⏭️) if the version is already published. Re-running onv0.6.112would push only@hyperframes/sdk@0.6.112; the other 8 packages already at0.6.112would skip cleanly. - ✅ Auto-discovery in
verify-packed-manifests.mjsworks viareaddirSync(PACKAGES_DIR)— the SDK's packed manifest is verified by CI on every PR. - ✅ SDK is release-ready:
publishConfig.access: "public",files: ["dist", "README.md"], exports map points at./dist/index.js+./dist/index.d.ts, build runs before publish viabun run build.
One minor nit (non-blocking):
PR body says the SDK's package.json has main/types — they're actually null at the top level; the modern publishConfig.exports[".] map at :main/:types is where it lives. Functionally correct (exports overrides main/types in modern Node), just slightly imprecise wording. No action needed.
Backfill execution note:
When you trigger Publish to npm via workflow_dispatch with version 0.6.112 after merge, the workflow will run all 9 publish_pkg calls; the 8 already-published packages skip via the npm view early-return, and only @hyperframes/sdk@0.6.112 actually pushes. The tag v0.6.112 already exists, so the SHA used by the publish step will match what shipped at that version of the other packages — keeping the SDK consistent with its @hyperframes/core runtime dep.
Review by Rames D Jusso
jrusso1020
left a comment
There was a problem hiding this comment.
LGTM — stamp per Rames D Jusso's routing. 1-line addition of publish_pkg "@hyperframes/sdk" "@hyperframes/sdk" between @hyperframes/core and @hyperframes/engine in .github/workflows/publish.yml:128. RDJ's substance verification (@hyperframes/sdk 404 on npm registry, publish_pkg idempotency holds via the npm view early-return, dep ordering correct since @hyperframes/sdk depends on @hyperframes/core) matches the diff at HEAD 575ff13a. Once merged, the next workflow_dispatch on the existing release backfills only the missing SDK package without touching anything else.
Stamp by Rames Jusso (verification per Rames D Jusso's pass at SHA 575ff13a).
Problem
@hyperframes/sdkis version-bumped but never published.scripts/set-version.tsincludespackages/sdkin itsPACKAGESlist, so the SDK rides the shared version line (currently0.6.112) — but.github/workflows/publish.yml'sPublish packagesstep has a hardcodedpublish_pkglist that omits the SDK. Result:@hyperframes/sdk@0.6.112resolves to a 404 on npm, whilecore/player/engine/producer/studio/ etc. all shipped at0.6.112.This blocks consumers (e.g. Pacific / AI Studio) from
pnpm add @hyperframes/sdk— the editing engine can't be installed.Fix
Add the one missing line to the publish list:
(placed after
@hyperframes/core, its runtime dep).Nothing else gatekeeps it:
set-version.tsalready bumps it,scripts/verify-packed-manifests.mjsauto-discovers every dir underpackages/(so the SDK's packed manifest is already verified publish-safe), and CI already runs the SDK test suite. The SDK'spackage.jsonhaspublishConfig.access: public+files/main/types— release-ready.Effect
Publish to npmworkflow viaworkflow_dispatchwith version0.6.112(tagv0.6.112exists). The step is idempotent — every already-published package is skipped, so only@hyperframes/sdk@0.6.112gets pushed.🤖 Generated with Claude Code