Version Packages - #54
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
September 6, 2026 16:17
341f718 to
0273f60
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
September 7, 2026 05:47
0273f60 to
18aa556
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@shopify/ucp-cli@0.9.0
Minor Changes
cb59279: A profile speaks exactly one UCP release, and the business must offer that release.
ucp-clisupports UCP 2026-04-08 and 2026-08-25. This explicit set replaces the2026-01-23–2026-08-25range that0.8.0accepted; the profile selects which release it speaks when you create it:Upgrading also raises the runtime floor to Node.js
22.19.0(breaking change 7).Breaking changes
The selected profile's release must exactly match a version the business offers.
0.8.0accepted a business service entry anywhere in its2026-01-23–2026-08-25range. Now a2026-08-25profile against a business publishing only2026-04-08fails withPROTOCOL_VERSION_INCOMPATIBLEbefore any commerce operation is sent — and when another local profile speaks a version the business offers, the error names that profile. A business offering neither supported release (for example, only2026-01-23) can no longer negotiate at all.The match can also come through
supported_versions: whenever the top-level/.well-known/ucpdocument is at any different version and itssupported_versionsentry links a document for your profile's release,ucp-clifetches and validates that leaf. Extension-key validation follows the selected release:2026-04-08rejects hyphens and digit-leading reverse-domain segments;2026-08-25behavior is unchanged.A profile's local
profile.jsoncontrols negotiation, whether its profile URL is a release default or a URL you own. Itsucp.version, services, and capabilities are whatucp-cliuses. Requests advertise the profile URL, the business reads the copy served there, anducp doctorcompares the two. If an operation reportsAGENT_PROFILE_SERVICE_UNDECLARED, declare that service inprofile.jsonand make the profile URL serve the corrected file — switching to a URL you own if the current one cannot change.Upgrading does not rewrite an existing
profile.json, so a stock0.8.0file can report a non-failingprofile-driftwarning against the currently served document.ucp profile init --name <name> --version <release> --forcereplaces the file and discards local edits; pass--profile-urlagain when the URL is yours.ucp profile inittakes--version <release>; the removed--protocol-min/--protocol-maxflags now fail as unknown flags. A stalemeta.protocol_versionsfield in existing profiles is tolerated but ignored.ucp profile publishis removed and invoking it fails as an unknown command. The0.8.0command never uploaded a document; publishprofile.jsonthrough your hosting workflow.Bare
ucp discovernegotiates only the services both your agent profile and the business document declare. Business-only services stay visible in the returnedprofile, are not contacted, get nonegotiatedentry — and no longer fail a bareucp discovermerely because they cannot negotiate. Explicitly requesting an undeclared service still raisesAGENT_PROFILE_SERVICE_UNDECLARED.Output gains
protocol— fieldsversion,source(well-knownorsupported_versions), andbusinessProfileUrl— plusexpectedCapabilities, the intersection of agent profile and business declarations.expectedCapabilitiesis advisory; each response'sucp.capabilitiesremains authoritative.ucp doctorexits 1 when any check fails; warnings alone exit 0.--skip-networkskips exactly four checks:protocol,profile-redirect,profile-drift, andprofile-cache-control.Those four replace
0.8.0'sprofile-urlcheck id — update scripts that match check ids. An unreachable profile URL or a version disagreement is a failure; non-version document drift and cache-control issues are warnings.ucp --versionprintsucp <cli-version> (UCP 2026-04-08, 2026-08-25)instead of0.8.0's bare semver. Update scripts to read<cli-version>from the second field.Node.js
22.19.0or later is required. npm's default behavior reports theenginesmismatch as anEBADENGINEwarning and completes the install, so a successful install is not proof of compatibility.ucp doctor'sruntimecheck now compares the fullmajor.minor.patchand fails below the floor;0.8.0compared the major version only. Upgrade Node before invoking the CLI.Redirect responses are refused: UCP requires profile, identity, and schema documents to be served directly, with no redirect to follow.
ucp-clirefuses301,302,303,307, and308on every outbound UCP fetch, and applies the same policy to negotiated service endpoints, so the endpoint it calls is the endpoint the business document declares.Direct refusals raise
TRANSPORT_REDIRECT_REFUSED, naming the status and the refusedLocation. A redirecting agent profile URL surfaces inucp doctoras a single failingprofile-redirectcheck. Serve documents directly and put each final HTTPS URL in the declaration that names it.Fixed
checkout completebody handling so it accepts input consistently with other write operations.Error codes
Eight codes are added relative to
0.8.0, and none are removed:AGENT_PROFILE_SCHEMA_INVALID,AGENT_PROFILE_SERVICE_UNDECLARED,AGENT_PROFILE_UNREACHABLE,AGENT_PROFILE_VERSION_MISMATCH,AGENT_PROFILE_VERSION_UNSUPPORTED,PROFILE_VERSION_MISMATCH,SERVICE_VERSION_INCOMPATIBLE, andTRANSPORT_REDIRECT_REFUSED.Within this added set, the
AGENT_PROFILE_*codes identify your agent document — the one your requests advertise.PROFILE_VERSION_MISMATCHidentifies the business document.SERVICE_VERSION_INCOMPATIBLEmeans the two sides' service declarations share no common version.TRANSPORT_REDIRECT_REFUSEDis a redirect refused directly at the transport (breaking change 8).