ci(release): link agentex-client and agentex-sdk versions in release-please#451
Merged
Conversation
The agentex-sdk wheel ships src/agentex/lib/**, but release-please attributes those changes to agentex-client (path `.`), not agentex-sdk (path adk/), so lib-only release windows never bump the SDK. Its rebuilt wheel then collides with the immutable PyPI artifact at the unchanged version (e.g. #426 / agentex-client-v0.16.1, where agentex-sdk stayed 0.15.0). Add the linked-versions plugin so both components share one version and bump together — matching the existing lockstep / floor-only-pin design. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Summary
Root-cause fix for the SDK/client version divergence behind the failed
agentex-client-v0.16.1release (#426).agentex-sdkshipssrc/agentex/lib/**(force-included from outsideadk/byadk/hatch_build.py), but release-please attributes changes by directory: anything underadk/**→agentex-sdk, everything else (includingsrc/agentex/lib/**) →agentex-client(path.). So alib/**change — which is exactly what the SDK ships and the client excludes — only ever bumps the client. The SDK bumps only when something physically underadk/happens to ride along in the same release window.This has drifted since release #411 (client
0.14.0/ sdk0.13.2). #426 was the first lib-only window with noadk/**change →agentex-clientcut0.16.1,agentex-sdkstayed0.15.0, and the rebuiltagentex_sdk-0.15.0wheel (now carrying the streaming fix) collided with the immutable PyPI artifact.Fix
Add the
linked-versionsplugin groupingagentex-client+agentex-sdk. release-please then keeps both components on one version and bumps them together (it takes the max version across the group), so any change that bumps the client also bumps the SDK. This matches the design the two packages already declare — co-released in lockstep,agentex-sdkpinsagentex-clientfloor-only.How this composes with the other PRs
lib/**changes, ci(packaging): publish only the tagged pypi package #450 converts today's loud PyPI collision into a silent failure (the SDK never rebuilds/publishes, so SDK consumers silently miss the fix and CI stays green). With this PR, alib/**change bumps both components → both tags fire → ci(packaging): publish only the tagged pypi package #450 publishes each cleanly.Notes
feat/fixrelease (thisci-typed commit doesn't trigger a bump on its own).linked-versionssnapsagentex-sdkup to the client's line (0.15.x → 0.16.x); it skips an unreleased range, which is harmless.🧑💻🤖 — posted via Claude Code
Greptile Summary
Adds the
linked-versionsrelease-please plugin to keepagentex-clientandagentex-sdkon the same version, fixing the root cause of the silent SDK drift first exposed by the failedagentex-client-v0.16.1release. Any change that bumps one component now automatically bumps the other to the same version.pluginsblock torelease-please-config.jsonwith a singlelinked-versionsentry groupingagentex-clientandagentex-sdk; component names match the existingpackagesentries exactly.feat/fixrelease the SDK will be snapped from0.15.0up to the client's current0.16.xline, skipping the unreleased gap — acknowledged in the PR description as harmless.Confidence Score: 5/5
Safe to merge — a minimal, targeted config change with no runtime code involved.
The change is a single plugin block in a JSON config file. The linked-versions syntax is correct, both component names match the existing packages entries, and the version-snap behavior on the next release is intentional and documented. There are no code changes and no risk of regressions.
No files require special attention.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Conventional commit lands on next] --> B{Which paths changed?} B -->|adk/** touched| C[agentex-sdk gets a bump] B -->|src/agentex/lib/** or root touched| D[agentex-client gets a bump] B -->|both touched| E[Both components get independent bumps] C --> F[linked-versions plugin] D --> F E --> F F --> G{Take max version across group} G --> H[Both agentex-client and agentex-sdk set to the same version] H --> I[Release PR opened with both components at max version] I --> J[Tags: agentex-client-vX.Y.Z and agentex-sdk-vX.Y.Z] J --> K[publish-pypi.yml builds and uploads both wheels to PyPI]%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% flowchart TD A[Conventional commit lands on next] --> B{Which paths changed?} B -->|adk/** touched| C[agentex-sdk gets a bump] B -->|src/agentex/lib/** or root touched| D[agentex-client gets a bump] B -->|both touched| E[Both components get independent bumps] C --> F[linked-versions plugin] D --> F E --> F F --> G{Take max version across group} G --> H[Both agentex-client and agentex-sdk set to the same version] H --> I[Release PR opened with both components at max version] I --> J[Tags: agentex-client-vX.Y.Z and agentex-sdk-vX.Y.Z] J --> K[publish-pypi.yml builds and uploads both wheels to PyPI]Reviews (1): Last reviewed commit: "ci(release): link agentex-client and age..." | Re-trigger Greptile