BAP uses automated releases for both npm and PyPI.
main is the only release branch.
- Changesets uses
mainas the base branch. - CI and release automation publish only from pushes to
main. - Release PRs should merge into
main; do not publish from feature branches, temporary branches, or pre-release branches.
When a pull request with one or more changesets lands on main, GitHub Actions
will:
- Run the release verification suite (
pnpm release:verify) - Create or update the Changesets release PR
- On merge of that release PR, publish npm packages
- Create GitHub Releases for the published npm packages
- Sync the Python SDK version to the release version
- Build, validate, and publish
browser-agent-protocolto PyPI - Verify that npm and PyPI now expose the expected versions
- Repository secret:
NPM_TOKEN - Package permissions on npm for the
@browseragentprotocolscope - Trusted publishing / provenance enabled on npm if you want attestation
- A PyPI project named
browser-agent-protocol - GitHub trusted publishing configured for this repository
- A GitHub environment named
pypi
Run the launch-readiness checks locally:
npx pnpm release:verifyTo inspect publishable npm tarballs directly:
npx pnpm build
npx pnpm check:artifacts- Published npm packages are versioned with Changesets
- The Python SDK version is synced automatically to the same release version by
scripts/sync-python-version.mjs - The release workflow verifies both registries after publish
- Current version:
0.6.0(all packages linked, versioned together via changesets)
- Missing changeset for a publishable package change
- npm tarball missing
LICENSE,README.md, orCHANGELOG.md - Python version drift between
pyproject.toml,package.json, andsrc/browseragentprotocol/__init__.py - PyPI publish blocked because trusted publishing or project permissions are not configured
If npm publishes successfully but the Python SDK fails afterward, fix the issue
on main and then manually run the Release workflow with
python_only = true. That recovery mode rebuilds, tests, publishes, and
verifies the current browser-agent-protocol version on PyPI without forcing a
new npm release.