feat(noir-projects): publish compiled protocol artifacts to npm - #25075
Merged
Conversation
Publishes the compiled Noir protocol circuits, mock circuits and protocol contracts as three npm packages, so a repo without a Noir toolchain can generate its own TypeScript bindings from them. Staging copies each subproject's build output into the package that publishes it, strips the source mapping from the protocol circuits to match what noir-protocol-circuits-types publishes today, and checks every staged file against the tarball npm would upload before anything is published.
nchamo
marked this pull request as ready for review
July 31, 2026 16:57
nventuro
approved these changes
Jul 31, 2026
rangozd
pushed a commit
to rangozd/aztec-packages
that referenced
this pull request
Aug 5, 2026
BEGIN_COMMIT_OVERRIDE fix(pxe): validate a BoundedVec against its storage array on deserialization (AztecProtocol#25035) chore: add disclaimers on poc contracts (AztecProtocol#24975) chore: begin nr constant cleanup (AztecProtocol#25014) fix(txe): authorize sync_state utility calls in inlined contexts (AztecProtocol#25034) refactor(stdlib): a function's return type is a single optional AbiType (AztecProtocol#25066) feat(pxe): hash-pinned node read cache (AztecProtocol#24969) feat(noir-projects): publish compiled protocol artifacts to npm (AztecProtocol#25075) fix(ci): trim GitHub commit API response in upload_benchmarks to avoid E2BIG on large merge commits (AztecProtocol#25077) END_COMMIT_OVERRIDE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
The compiled Noir artifacts under
noir-projects/fndare only reachable from inside this repo. A separate repo generating TypeScript bindings from them has no Noir toolchain and no way to compile them itself, so it needs them from npm.The change
Three new packages, published from
noir-projects/fndon a release tag:@aztec/noir-protocol-circuits-artifacts— the protocol circuits, plus the reset config and dimensions files that the reset-data and ABI generators read@aztec/mock-protocol-circuits-artifacts— the mock circuits used by proving system integration tests@aztec/protocol-contracts-artifacts— the contracts named inprotocol_contracts.json, plus that manifestThey carry raw artifacts only. Generating TypeScript from them stays with the consumer.
Each package is assembled at release time into a
dist/staging directory, rebuilt from nothing on every run and gitignored, following whatnoir/bootstrap.shand bb.ts already do for their generated packages. The manifests declare nofileslist anddistcarries no ignore file, so npm packs the directory wholesale and the staging code is the only place that decides what ships.The protocol circuits package blanks
file_mapanddebug_symbols, a fifth of its download that nothing generating bindings reads. The contract artifacts keep theirs because PXE resolves a failing public call against contract debug info.Nothing consumes the packages yet: the in-repo generators still read the target directories directly, and
noir-projects/fndis not in theprivate_releaselist.