chore: release main#411
Merged
stainless-app[bot] merged 25 commits intoJun 22, 2026
Merged
Conversation
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Declan Brady <declan.brady@scale.com> Co-authored-by: Michael Chou <michael.chou@scale.com>
…ts adapter (#375) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…test + debugpy) (#379)
…nc + temporal) (#377) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Max Parke <max.parke@scale.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Declan Brady <declan.brady@scale.com> Co-authored-by: Michael Chou <michael.chou@scale.com> Co-authored-by: Daniel Miller <daniel.miller@scale.com> Co-authored-by: Matteo Librizzi <matteo.librizzi@scale.com>
…into-next-2 # Conflicts: # src/agentex/lib/core/tracing/span_queue.py # tests/lib/core/tracing/test_span_queue.py
chore: back-merge main into next (merge commit to clear release PR #382)
Add OpenTelemetry metrics for async span queue processing and SGP export: queue depth, batch lag, drain duration, shutdown flush timing, and export success/failure counters with bounded HTTP status labels. Introduce AGENTEX_TRACING_METRICS=0|false|no|off kill switch to disable SDK-side recording without code changes. Linear: SGPINF-1863
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
….7-into-next # Conflicts: # CHANGELOG.md # src/agentex/lib/core/tracing/span_queue.py
chore: back-merge release 0.11.7 into next
….8-into-next # Conflicts: # CHANGELOG.md
chore: back-merge release 0.11.8 into next
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
be400b9 to
d24cd19
Compare
d24cd19 to
34756c4
Compare
34756c4 to
174a184
Compare
Stainless dropped `from typing import Optional` for the BaseModel variant of is_error (Optional[bool]); the _param TypedDict variant imports it correctly. Restores valid import so wheel install, tests, and lint pass.
174a184 to
562e220
Compare
562e220 to
527cb37
Compare
declan-scale
approved these changes
Jun 22, 2026
Contributor
Author
Contributor
Author
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.
✨ Stainless prepared a new release
agentex-client: 0.14.0
0.14.0 (2026-06-22)
Full Changelog: agentex-client-v0.13.1...agentex-client-v0.14.0
Features
Bug Fixes
agentex-sdk: 0.13.2
0.13.2 (2026-06-22)
Full Changelog: agentex-sdk-v0.13.1...agentex-sdk-v0.13.2
This pull request is managed by Stainless's GitHub App.
The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.
For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.
🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions
Greptile Summary
This release (agentex-client 0.14.0, agentex-sdk 0.13.2) introduces a runtime SDK↔backend version guard that fails fast at startup when the backend is older than the SDK's minimum supported contract, and adds an
is_errorfield toToolResponseContent/ToolResponseContentParam.version_guard.py– new module that fetches/openapi.jsonfrom the backend, parses SemVer with full §11 precedence rules, and raisesIncompatibleBackendErrorwhen the backend is belowMIN_BACKEND_CONTRACT; gracefully no-ops on network failure or whenAGENTEX_SKIP_VERSION_CHECKis set. Wired into bothBaseACPServer.lifespan_contextandAgentexWorker._register_agent.is_error: Optional[bool]– new optional field added toToolResponseContent(model) andToolResponseContentParam(TypedDict), plus inline schema updates inmessages.pyand the twomessage_list*_params.pyfiles; the missingOptionalimport is also backfilled in both files.Confidence Score: 5/5
Safe to merge — all changes are additive, the guard gracefully no-ops on network failure or missing base URL, and the new is_error field defaults to None.
The version guard is well-implemented: it fails fast only when the backend version is definitively known to be below the minimum, and degrades gracefully in every other case (timeout, unresolvable host, unparseable version string, missing AGENTEX_BASE_URL). The SemVer comparison correctly implements §11 precedence including prerelease ordering. Both startup paths (ACP server lifespan and Temporal worker registration) are covered. The is_error type additions are straightforward and consistent. Test coverage is thorough, including end-to-end flows through httpx.MockTransport.
No files require special attention.
Important Files Changed
assert_backend_compatibleinto_register_agentbeforeregister_agent, ensuring the worker fails fast on incompatible backends.assert_backend_compatibleintolifespan_contextbeforeregister_agent; mirrors the worker guard correctly.is_error: Optional[bool] = Nonefield and the previously missingOptionalimport; straightforward additive change.register_agent, that an incompatible backend blocks registration, and that a missing URL skips both.Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[ACP Server / Worker startup] --> B{AGENTEX_BASE_URL set?} B -- No --> Z[Skip guard, skip registration] B -- Yes --> C{AGENTEX_SKIP_VERSION_CHECK set?} C -- Yes --> W[warn + skip guard] W --> R[register_agent] C -- No --> D[fetch /openapi.json from backend] D -- "network error / timeout" --> E[warn: unknown version] E --> R D -- "200 OK" --> F{Parse info.version SemVer} F -- "unparseable" --> G[warn: proceed] G --> R F -- "valid" --> H{backend_version >= MIN_BACKEND_CONTRACT?} H -- Yes --> I[log: version guard OK] I --> R H -- No --> J[raise IncompatibleBackendError] J --> K[startup fails - operator must upgrade backend]%%{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[ACP Server / Worker startup] --> B{AGENTEX_BASE_URL set?} B -- No --> Z[Skip guard, skip registration] B -- Yes --> C{AGENTEX_SKIP_VERSION_CHECK set?} C -- Yes --> W[warn + skip guard] W --> R[register_agent] C -- No --> D[fetch /openapi.json from backend] D -- "network error / timeout" --> E[warn: unknown version] E --> R D -- "200 OK" --> F{Parse info.version SemVer} F -- "unparseable" --> G[warn: proceed] G --> R F -- "valid" --> H{backend_version >= MIN_BACKEND_CONTRACT?} H -- Yes --> I[log: version guard OK] I --> R H -- No --> J[raise IncompatibleBackendError] J --> K[startup fails - operator must upgrade backend]Reviews (4): Last reviewed commit: "chore: release main" | Re-trigger Greptile