From 5f8285db104b00b67aa55c65c589835d534dfd78 Mon Sep 17 00:00:00 2001 From: Josh Zhang <39790535+jiashuoz@users.noreply.github.com> Date: Wed, 2 Sep 2026 20:31:51 -0700 Subject: [PATCH] chore(release): bump ts-sdk 5.9.0, cli 2.5.1, python 5.8.1 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 Claude-Session: https://claude.ai/code/session_01AjfGxvXW6fNKWGFHuo68yX --- cli/CHANGELOG.md | 17 +++++++++++++++++ cli/package.json | 2 +- package-lock.json | 4 ++-- sdks/python/CHANGELOG.md | 20 ++++++++++++++++++++ sdks/python/pyproject.toml | 2 +- sdks/python/uv.lock | 2 +- sdks/typescript/CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ sdks/typescript/package.json | 2 +- 8 files changed, 75 insertions(+), 6 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 91cd54c09..3c1c99560 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## 2.5.1 + +Bug fix only. No flag, output-field, or exit-code meaning changes from 2.5.0. + +**Fixed:** `e2a contacts import` no longer bakes a stray carriage return into +imported contact metadata. The CSV parser dropped `\r` unconditionally outside +a quoted field but appended it verbatim inside one, so a CRLF export from +Excel, Sheets, or a CRM containing a multi-line cell stored the cell's internal +line breaks as `\r\n`. Quoted fields now normalize the same way the unquoted +branch already did, matching the parser's documented RFC 4180 conformance. + +**Documentation:** corrected the `--send-at` description in the README and in +this changelog's 2.2.0 entry. Both claimed a review hold *drops* the schedule; +in fact a scheduled send caught by a hold keeps its `send_at` — approving the +message submits at that instant if it is still in the future, or immediately if +it has already passed. No command behavior changed. + ## 2.5.0 Additive only for every input that already succeeded in 2.4.0 — no flag, diff --git a/cli/package.json b/cli/package.json index 075d3e9ff..29b661f0a 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@e2a/cli", - "version": "2.5.0", + "version": "2.5.1", "description": "CLI for e2a — give any AI agent a real, authenticated email inbox", "bin": { "e2a": "./dist/bin/e2a.js" diff --git a/package-lock.json b/package-lock.json index 27f7f1aec..dc8cecafb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ }, "cli": { "name": "@e2a/cli", - "version": "2.5.0", + "version": "2.5.1", "license": "Apache-2.0", "dependencies": { "@e2a/sdk": "^5.7.0" @@ -8111,7 +8111,7 @@ }, "sdks/typescript": { "name": "@e2a/sdk", - "version": "5.8.0", + "version": "5.9.0", "license": "Apache-2.0", "dependencies": { "ws": "^8.21.3" diff --git a/sdks/python/CHANGELOG.md b/sdks/python/CHANGELOG.md index 04ed964ba..bf97be798 100644 --- a/sdks/python/CHANGELOG.md +++ b/sdks/python/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## 5.8.1 + +Documentation only. No public name, signature, type, validation, or runtime +behavior differs from 5.8.0 — every 5.8.0 call site keeps working identically +on both ``AsyncE2AClient`` and the synchronous ``E2AClient``. + +### Documentation +- Regenerated the model field descriptions from the current OpenAPI document so + the shipped ``pydantic`` ``Field(description=...)`` text matches the server. + ``LimitsCapsView.max_messages_month`` and ``LimitsUsageView.messages_month`` + now state that the monthly allowance counts **outbound recipient-deliveries** + — a message to N distinct recipients consumes N units, and received mail is + free and never counted. ``LimitExceededDetails.resource`` documents the + additional ``messages_day`` stem (a per-UTC-day send cap carried by some + accounts; it has no ``AccountView`` field and resets at midnight UTC), so a + ``limit_exceeded`` on it clears when the UTC day rolls over rather than on an + upgrade. ``ErrorBody.code`` documents ``auth_unavailable`` (503 — an auth + backend such as a delegated-token verifier or the identity store could not + judge the credential; retry). + ## 5.8.0 ### Changed diff --git a/sdks/python/pyproject.toml b/sdks/python/pyproject.toml index 45b16115e..67175d77f 100644 --- a/sdks/python/pyproject.toml +++ b/sdks/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "e2a" -version = "5.8.0" +version = "5.8.1" description = "Python SDK for e2a — build AI agents with authenticated email" readme = "README.md" license = "Apache-2.0" diff --git a/sdks/python/uv.lock b/sdks/python/uv.lock index 3dd34508e..5e05239e4 100644 --- a/sdks/python/uv.lock +++ b/sdks/python/uv.lock @@ -760,7 +760,7 @@ wheels = [ [[package]] name = "e2a" -version = "5.8.0" +version = "5.8.1" source = { editable = "." } dependencies = [ { name = "httpx" }, diff --git a/sdks/typescript/CHANGELOG.md b/sdks/typescript/CHANGELOG.md index 237d8eb52..3e4d4fb8a 100644 --- a/sdks/typescript/CHANGELOG.md +++ b/sdks/typescript/CHANGELOG.md @@ -1,5 +1,37 @@ # Changelog +## 5.9.0 + +### Changed +- **Dot-segment path parameters are now rejected for *every* generated request, + not just the ten wrapper methods 5.8.0 covered.** The guard moved down to the + generated `RequestContext` chokepoint (both the constructor and `setUrl`), so + any `/v1` call whose templated path contains a literal `.` or `..` segment + throws `HttpException` ("request path contains an unsafe `..` segment") + *before* `new URL()` collapses the segment. Previously that collapse happened + before any middleware or retry layer could see it, so a caller-controlled + value of exactly `..` silently retargeted the request at a different, + larger-scoped resource. 5.8.0 closed this for the ten hand-written wrappers it + enumerated; every other path parameter — including any added by future codegen + — was still exposed. The guard is injected by a codegen post-processing step + rather than hand-edited, so `make generate` cannot drop it again. This is a + behavior change for any caller that was, deliberately or not, passing `.` or + `..` as a path parameter: it now throws instead of sending the (misdirected) + request. + +### Documentation +- Regenerated model and operation docs for the outbound-metering semantics the + server now documents. `LimitsCapsView.maxMessagesMonth` and + `LimitsUsageView.messagesMonth` are described as **outbound + recipient-deliveries** — a message to N distinct recipients consumes N units, + and received mail is free and never counted. `LimitExceededDetails.resource` + documents the additional `messages_day` stem (a per-UTC-day send cap carried + by some accounts; it has no `AccountView` field and resets at midnight UTC), + and the `402` throw sites say to retry after the UTC day rolls over. + `ErrorBody.code` documents `auth_unavailable` (503 — an auth backend could not + judge the credential; retry). Field names, types, and runtime behavior are + unchanged from 5.8.0. + ## 5.8.0 ### Added diff --git a/sdks/typescript/package.json b/sdks/typescript/package.json index 413d8958b..b74944ce9 100644 --- a/sdks/typescript/package.json +++ b/sdks/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@e2a/sdk", - "version": "5.8.0", + "version": "5.9.0", "description": "TypeScript SDK for e2a — build AI agents with authenticated email", "main": "./dist/index.js", "types": "./dist/index.d.ts",