ci: publish @wavehouse/sdk to npm and relicense to Apache-2.0 - #266
Conversation
Re-asserts the Wave RF copyright that the MIT→Apache-2.0 relicense dropped (top-level NOTICE), and records the relicense + npm publishing under CHANGELOG [Unreleased] — the pre-push reviewer's two SHOULD findings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Free Run ID: 📒 Files selected for processing (16)
📝 WalkthroughSummary by CodeRabbit
WalkthroughThis PR executes two major initiatives together: migrating the project license from MIT to Apache-2.0 repository-wide, and establishing automated npm publishing for the TypeScript SDK via GitHub Actions with OIDC trusted publishing. The license change affects legal documents, package metadata, and public-facing documentation. The npm publishing workflow automates snapshot builds on ChangesLicense Migration to Apache-2.0
TypeScript SDK npm Publishing Automation
🎯 3 (Moderate) | ⏱️ ~20 minutes Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
## Summary Follow-up to #266 — fixes the post-merge `dev` publish and redesigns the dev channel. The first post-merge `dev` run crashed on `npm install --global npm@latest`: ``` npm error code MODULE_NOT_FOUND npm error Cannot find module 'promise-retry' ``` `.nvmrc` pins Node 22, and setup-node resolved the **22.22.2** runner image whose bundled **npm 10.9.7 has a broken module tree** ([actions/runner-images#13883](actions/runner-images#13883), [nodejs/node#62430](nodejs/node#62430)) — so the self-upgrade crashed before ever reaching OIDC. Changes: 1. **Node 24 for the publish jobs** — ships **npm 11.5.1+** natively (the OIDC trusted-publishing floor), so the self-upgrade step is gone. The SDK build (tsup → es2022) is Node-version-agnostic; CI still tests on the repo's pinned Node 22. 2. **Content-addressed dev channel** — the `dev` job now builds on every push to `main` and publishes `0.0.0-dev.<build-hash>` only when that hash isn't already on npm. The version *is* a hash of the built `dist`, so an unchanged build maps to an existing version and is skipped — no `clients/ts` path guard (a build-affecting change outside `clients/ts` is caught too), and **no `workflow_dispatch`** (publishing can't be hand-fired). npm records the commit via `gitHead`. Synced with `main` (absorbs the `actions/checkout` v6.0.3 bump from #208). ## Test plan - [x] `make ci` passes locally - [x] `actionlint` clean - [x] Pre-push review `ship_it` — determinism verified by double-rebuild (identical hash) - [ ] After merge: the `dev` job publishes `0.0.0-dev.h<hash>` via OIDC (the first real trusted-publishing test) ## Related Issues Refs #227, #266 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nks, make clean) Pre-push self-review (pre-push-reviewer + docs-reviewer) surfaced four fixable findings on this branch (the license MIT/Apache-2.0 contradiction is separate — it resolves when origin/main #266 merges in): - CHANGELOG: no [Unreleased] entry for the first-boot trial policy, the standalone-stack compose wiring, or the http_scheme doc catch-up from d7ee36e. Add an Added bullet (CHANGELOG is in the docs-prose denylist, so the docs gate can't catch this — the code reviewer did). - clients/ts/README.md: E2E path said `tests/sdk/` (actual: `tests/e2e/sdk/`), and the Development Guide + SDK API Reference links pointed at non-existent `../../docs/{development,sdk}.md` repo paths — also broken on npmjs.com where this README is published. Repoint to the live https://wavehouse.dev/ URLs. - development.md: `make clean` row omitted `docs/dist/`, which `make clean` removes (Makefile help and deployment.md already list it). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…merge Merging origin/main brought in the repo-wide MIT->Apache-2.0 relicense (#266), which flipped LICENSE, the README badge/text, the SDK README, the JSON-LD + stat card, and why-wavehouse. But two license mentions live in branch-authored prose that #266 never saw (added in this branch's launch-sharpening work), so the merge resolution kept them as "MIT-licensed": - README.md:124 (Project status blurb) - docs/src/content/docs/index.mdx:158 (homepage closer) Both now read "Apache-2.0-licensed", consistent with LICENSE/NOTICE and the rest of the docs. The remaining CHANGELOG "MIT" mentions are intentionally kept: the relicense entry itself and the genuinely-MIT external plugin packages. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Makes
@wavehouse/sdkconsumable from npm, and relicenses the project MIT → Apache-2.0..github/workflows/publish-npm.yml, new) — the single npm trusted publisher for the SDK (npm allows one trusted workflow file per package), two jobs mirroring the Go/Docker release model:devpublishes0.0.0-dev.<sha>under thedevdist-tag on every push tomainthat touchesclients/ts/(the npm analog of the:devimage), andreleasepublishes a tagged version underlatest/alpha/beta/rc/next(derived from the version) + a GitHub Release onsdk-v*tags, decoupled from the server'sv*tags. Auth is GitHub OIDC trusted publishing — noNPM_TOKEN;--provenanceis deferred until the repo is public.clients/ts/package.jsongainsauthor/homepage/bugs+ a normalizedrepository.urland ships a bundledLICENSE.publish-dev.ymlis unchanged apart from a pointer comment.LICENSEfiles carry the canonical Apache text, a top-levelNOTICEasserts the copyright, and every textual reference (README, CONTRIBUTING, SUPPORT, both Dockerfiles' OCI label, the docs hero/stat card, the JSON-LDlicenseURL, the comparison table) flips.@wavehouse/sdk@0.0.0-dev.0f8826cis already bootstrapped on npm and the OIDC trusted publisher is configured forpublish-npm.yml, so merging arms the automateddevchannel.Test plan
make cipasses locallyactionlintclean onpublish-npm.yml+publish-dev.ymlnpm publish --dry-runbuilds via the package lifecycle and ships the ApacheLICENSE+dist/+READMEdevpublish goes green via OIDC (verify after merge)Related Issues
Closes #227
Refs #149