release: 1.20.1#137
Conversation
PR SummaryMedium Risk Overview Fixes URL construction by preserving query parameters already present in a provided CI now skips OIDC token retrieval and artifact uploads on Written by Cursor Bugbot for commit 9bd9174. This will update automatically on new commits. Configure here. |
|
🧪 Testing To try out this version of the SDK: Expires at: Mon, 06 Apr 2026 17:58:11 GMT |
36fa68c to
ca53268
Compare
ca53268 to
a9fb097
Compare
a9fb097 to
4c89ac2
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Malformed Retry-After causes zero-backoff retry loop
- Restored validation so malformed, non-positive, or excessively large Retry-After values fall back to exponential default backoff instead of sleeping with zero delay.
Or push these changes by commenting:
@cursor push 66268961bc
Preview (66268961bc)
diff --git a/src/core.ts b/src/core.ts
--- a/src/core.ts
+++ b/src/core.ts
@@ -620,7 +620,7 @@
// If the API asks us to wait a certain amount of time, do what it says.
// Otherwise calculate a default.
- if (timeoutMillis === undefined) {
+ if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {
const maxRetries = options.maxRetries ?? this.maxRetries;
timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);
}| if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) { | ||
| // If the API asks us to wait a certain amount of time, do what it says. | ||
| // Otherwise calculate a default. | ||
| if (timeoutMillis === undefined) { |
There was a problem hiding this comment.
Malformed Retry-After causes zero-backoff retry loop
High Severity
The guard if (timeoutMillis === undefined) no longer protects against NaN or negative timeoutMillis values. When a Retry-After header contains a non-numeric, non-date string, Date.parse() returns NaN, making timeoutMillis NaN. Since NaN !== undefined, the default backoff is skipped and sleep(NaN) is called, which setTimeout treats as 0ms. Similarly, a past date produces a negative value, also treated as 0ms. Both cases cause immediate retries with zero backoff, potentially hammering the server in a tight loop.
Additional Locations (1)
4c89ac2 to
5aa407f
Compare
5aa407f to
84ee637
Compare
84ee637 to
9bd9174
Compare
|
🤖 Release is at https://github.com/lumalabs/lumaai-node/releases/tag/v1.20.1 🌻 |



Automated Release PR
1.20.1 (2026-03-07)
Full Changelog: v1.20.0...v1.20.1
Bug Fixes
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