chore(release): bump ts-sdk 5.9.0, cli 2.5.1, python 5.8.1 - #988
Merged
Conversation
Cuts the three client packages against the diff since each one's last PUBLISHED tag (ts-sdk-v5.8.0, cli-v2.5.0, python-v5.8.0) rather than since the last server release, per the #935 post-mortem. @e2a/sdk 5.9.0 (minor). #936 moves the dot-segment path guard down to the generated RequestContext chokepoint, so every generated request is covered instead of the ten hand-written wrappers 5.8.0 enumerated. Minor rather than patch for the same reason 5.8.0 was: a path parameter of exactly "." or ".." now throws instead of issuing a misdirected request. Generated model and operation docs also pick up the outbound recipient-delivery metering semantics and the messages_day / auth_unavailable vocabulary. @e2a/cli 2.5.1 (patch). #947 stops the CSV parser leaking a raw carriage return out of a quoted multi-line field, plus the #937 --send-at / review-hold documentation correction. e2a 5.8.1 (patch). Generated pydantic Field descriptions refreshed from the current OpenAPI document; no name, signature, type, validation, or runtime behavior differs from 5.8.0. cli/package.json keeps its "@e2a/sdk": "^5.7.0" range: check-sdk-version-sync compares majors, ^5.7.0 already resolves to 5.9.0 on a fresh install, and leaving it avoids creating a window where cli-v2.5.1 is unsatisfiable. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjfGxvXW6fNKWGFHuo68yX
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.
Cuts the three client packages ahead of the tag pushes that actually publish them. Every scope decision below comes from diffing each package directory against its own last published tag, not against the last server release — the baseline mistake #932 made and #935 documented.
@e2a/sdk(sdks/typescript/)@e2a/cli(cli/)e2a(sdks/python/)Nothing is published by merging this. The manifests still carry the published versions today, so a
ts-sdk-v*/python-v*/cli-v*tag pushed before this lands would try to republish an existing version and fail at the registry. This PR is the prerequisite; the tags come after.@e2a/sdk5.9.0 — minorgit diff ts-sdk-v5.8.0..main -- sdks/typescript/#936 — dot-segment path guard at the generated
http.tschokepoint (fixes #915). 5.8.0 shipped this guard on ten hand-written wrapper methods, enumerated by name. #936 moves it down into the generatedRequestContext(both the constructor andsetUrl), so every generated request is covered, including any path parameter added by future codegen. Without itnew URL()collapses a literal./..segment before any middleware or retry layer can see the request, so a caller-controlled value of exactly..silently retargets the call at a different, larger-scoped resource. The guard is injected by a codegen post-processing step (scripts/guard-dot-segment-path.py, wired intogenerate-oag.sh) rather than hand-edited, somake generatecannot drop it again. Ships indist/.Minor, not patch, on the #935 precedent and matching Python 5.8.0: a path parameter that previously produced a real (misdirected) request now throws
HttpException. That is a behavior change for any caller passing those values, deliberately or not.Generated doc refresh (#949, #946) — descriptions only, no type or field changes:
LimitsCapsView.maxMessagesMonth/LimitsUsageView.messagesMonthare documented as outbound recipient-deliveries (a message to N distinct recipients consumes N units; received mail is free),LimitExceededDetails.resourcedocuments themessages_dayper-UTC-day send-cap stem, andErrorBody.codedocumentsauth_unavailable(503).Also in range but not user-visible: #957 (explicit timeouts on live e2e reads), #938 (contract harness raises on an unrecognized setup step), #964 (
@types/nodedevDependency).@e2a/cli2.5.1 — patchgit diff cli-v2.5.0..main -- cli/#947 —
parseCSVstrips CR inside quoted fields, not just outside them. The parser dropped\runconditionally outside a quoted field but appended it verbatim inside one, so a CRLF export from Excel/Sheets/a CRM containing a multi-line cell had the cell's internal line breaks stored as\r\nin contact metadata viae2a contacts import. One-character fix (} else {→} else if (char !== "\r") {) plus a regression test.#937 —
--send-at/ review-hold documentation correction incli/README.mdand the changelog's 2.2.0 entry. Both claimed a hold drops the schedule; a held scheduled send actually keeps itssend_atand re-arms on approval. No command behavior changed.cli/package.jsondeliberately keeps"@e2a/sdk": "^5.7.0".check-sdk-version-sync.mjscompares majors only,^5.7.0already resolves to 5.9.0 on a fresh install, and tightening it to^5.9.0would create a window wherecli-v2.5.1is unsatisfiable on npm.e2a(Python) 5.8.1 — patchgit diff python-v5.8.0..main -- sdks/python/Documentation only. The only shipped-source change is regenerated
pydanticField(description=...)text on four generated models — the samemessages_month/messages_day/auth_unavailablerefresh described above. Public names, signatures, types, and validation are identical to 5.8.0. Remaining diff istests/test_contract.py(#938), which is not packaged.Validation (all run in this branch's worktree)
node scripts/check-sdk-version-sync.mjsmcp ^5.0.0andcli ^5.7.0both match workspace SDK 5.9.0node scripts/check-plugin-version-bump.mjs origin/mainnpm cinpm run build --workspace @e2a/sdk@e2a/sdk@5.9.0)npm test --workspace @e2a/sdknpm test --workspace @e2a/clinpm run build --workspace @e2a/cli@e2a/cli@2.5.1)pip install -e ".[dev]" && pytest tests/mypypackage-lock.jsonwas updated by hand to the two workspace version lines only. Runningnpm install --package-lock-onlyon this machine's npm 11.6.4 additionally stripslibcfields that the CI-generated lockfile carries, which would have been unrelated churn; the resulting 2-line diff matches the shape of the previous release commits.After merge — tag push order
Tags are pushed against the merged commit, one at a time, each verified before the next.
@e2a/clidepends on@e2a/sdk, so the CLI tag goes last.🤖 Generated with Claude Code
https://claude.ai/code/session_01AjfGxvXW6fNKWGFHuo68yX