chore: release main#461
Open
stainless-app[bot] wants to merge 3 commits into
Open
Conversation
#460) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
4266454 to
bc499ed
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.
✨ Stainless prepared a new release
agentex-client: 0.18.1
0.18.1 (2026-07-13)
Full Changelog: agentex-client-v0.18.0...agentex-client-v0.18.1
Bug Fixes
agentex-sdk: 0.18.1
0.18.1 (2026-07-13)
Full Changelog: agentex-sdk-v0.18.0...agentex-sdk-v0.18.1
Chores
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 patch release (0.18.1) fixes two issues: a build failure resolved by adding
-p .to thepyrightinvocation inscripts/lint, and a tracing gap where exceptions raised inside span context managers were silently swallowed with no error signal exported to SGP.span_error.pymodule:set_span_errorstores{type, message}under the reserveddata["__error__"]key (no-op for list-shaped data, mirroring the_add_source_to_spanconvention), andget_span_errorretrieves it.trace.pycontext managers updated: bothTrace.spanandAsyncTrace.spannow catchException, callset_span_error, and re-raise so the span error is always recorded beforeend_spanfires infinally.sgp_tracing_processor._build_sgp_spanupdated: reads the recorded error viaget_span_errorand callssgp_span.set_error(...)so spans that experienced an exception are exported withstatus=ERRORrather thanSUCCESS.Confidence Score: 5/5
Safe to merge — changes are well-scoped, additive, and covered by new tests.
The exception-capture path is straightforward: set_span_error mutates span.data before end_span serializes it, and the SGP processor correctly reads the error key on export. Error info is never lost because the except block runs before finally. No existing behaviour is altered for the happy path. Tests cover helpers, both sync/async context managers, and the SGP mapping layer.
No files require special attention.
Important Files Changed
Sequence Diagram
%%{init: {'theme': 'neutral'}}%% sequenceDiagram participant Caller participant Trace/AsyncTrace participant span_error participant SGPProcessor participant SGP Caller->>Trace/AsyncTrace: async/sync with trace.span("op") as span Trace/AsyncTrace->>Trace/AsyncTrace: start_span() Trace/AsyncTrace-->>Caller: yield span alt Exception raised in body Caller-->>Trace/AsyncTrace: raises Exception Trace/AsyncTrace->>span_error: set_span_error(span, exc) span_error->>span_error: "span.data["__error__"] = {type, message}" Trace/AsyncTrace-->>Caller: re-raise end Trace/AsyncTrace->>Trace/AsyncTrace: end_span() [finally] Trace/AsyncTrace->>SGPProcessor: on_span_end(span) SGPProcessor->>span_error: get_span_error(span) span_error-->>SGPProcessor: "{type, message} or None" alt Error present SGPProcessor->>SGPProcessor: sgp_span.set_error(error_type, error_message) note over SGPProcessor: status = ERROR end SGPProcessor->>SGP: upsert_batch(sgp_span)%%{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"}}}%% sequenceDiagram participant Caller participant Trace/AsyncTrace participant span_error participant SGPProcessor participant SGP Caller->>Trace/AsyncTrace: async/sync with trace.span("op") as span Trace/AsyncTrace->>Trace/AsyncTrace: start_span() Trace/AsyncTrace-->>Caller: yield span alt Exception raised in body Caller-->>Trace/AsyncTrace: raises Exception Trace/AsyncTrace->>span_error: set_span_error(span, exc) span_error->>span_error: "span.data["__error__"] = {type, message}" Trace/AsyncTrace-->>Caller: re-raise end Trace/AsyncTrace->>Trace/AsyncTrace: end_span() [finally] Trace/AsyncTrace->>SGPProcessor: on_span_end(span) SGPProcessor->>span_error: get_span_error(span) span_error-->>SGPProcessor: "{type, message} or None" alt Error present SGPProcessor->>SGPProcessor: sgp_span.set_error(error_type, error_message) note over SGPProcessor: status = ERROR end SGPProcessor->>SGP: upsert_batch(sgp_span)Reviews (2): Last reviewed commit: "chore: release main" | Re-trigger Greptile