chore: release v4.5.0-rc.4#3788
Merged
Merged
Conversation
0abaeba to
9a9dab9
Compare
9a9dab9 to
4120d79
Compare
4120d79 to
2f69ccf
Compare
2f69ccf to
8958b55
Compare
8958b55 to
5739fc1
Compare
5739fc1 to
79e3a69
Compare
79e3a69 to
0aa3367
Compare
0aa3367 to
af61dce
Compare
af61dce to
e0620ca
Compare
ericallam
approved these changes
Jun 2, 2026
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.
Summary
1 new feature, 5 improvements.
Highlights
mutateSnapshotnow enforces a tag cap: anappend_tagspatch carryingmaxTagsreturns"limit_exceeded"(writing nothing) when the deduped tag count would exceed the limit, so a buffered run can't accumulate more tags via the tags API than the trigger validator allows at creation. (#3756)Improvements
mutateSnapshotAPI, metadata CAS, claim primitives, and aMollifierSnapshottype. The buffer's Redis client now reconnects with jittered backoff so a fleet of clients doesn't stampede Redis in lockstep after a blip. (#3752)onTerminalFailurecallback toMollifierDrainerOptionsso the customer's run lands a SYSTEM_FAILURE PG row even when the drainer exhaustsmaxAttemptson a retryable PG error. Previously, retryable-error exhaustion calledbuffer.fail()directly, which atomically marks FAILED + DELs the entry hash with no PG write — silent data loss when PG was unreachable across the full retry budget. The callback fires beforebuffer.fail()on any terminal path (cause: "non-retryable"or"max-attempts-exhausted"); throwing a retryable error from the callback causes the drainer to requeue rather than fail. (#3754)@s2-dev/streamstoreto0.22.10to fix aTASK_RUN_UNCAUGHT_EXCEPTION("Invalid state: Unable to enqueue") when achat.agentturn is aborted mid-stream. (#3792)concurrencyKeyvalues to string at the API boundary acrosstasks.trigger,tasks.batchTrigger, and the Phase-2 streaming batch endpoint. (#3789)toolsoption tochat.agent. Declaring your tools here threads them into the SDK's internalconvertToModelMessages, so each tool'stoModelOutputis re-applied when prior-turn history is re-converted. (#3790)Raw changeset output
mainis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonmain.Releases
@trigger.dev/redis-worker@4.5.0-rc.4
Minor Changes
mutateSnapshotAPI, metadata CAS, claim primitives, and aMollifierSnapshottype. The buffer's Redis client now reconnects with jittered backoff so a fleet of clients doesn't stampede Redis in lockstep after a blip. (#3752)onTerminalFailurecallback toMollifierDrainerOptionsso the customer's run lands a SYSTEM_FAILURE PG row even when the drainer exhaustsmaxAttemptson a retryable PG error. Previously, retryable-error exhaustion calledbuffer.fail()directly, which atomically marks FAILED + DELs the entry hash with no PG write — silent data loss when PG was unreachable across the full retry budget. The callback fires beforebuffer.fail()on any terminal path (cause: "non-retryable"or"max-attempts-exhausted"); throwing a retryable error from the callback causes the drainer to requeue rather than fail. (#3754)Patch Changes
HGETALLfetches inMollifierBuffer.listEntriesForEnv. The previous serial implementation issued one Redis round-trip per runId returned byLRANGE, which dominated stale-sweep wall-time at any meaningful backlog (at the sweep's default maxCount=1000, this is ~1000 RTTs per env per pass). Behaviour is unchanged — entries are still skipped when the entry hash has been torn down by a concurrent drainer ack/fail between the LRANGE and the HGETALL. (#3752)mutateSnapshotnow enforces a tag cap: anappend_tagspatch carryingmaxTagsreturns"limit_exceeded"(writing nothing) when the deduped tag count would exceed the limit, so a buffered run can't accumulate more tags via the tags API than the trigger validator allows at creation. (#3756)@trigger.dev/core@4.5.0-rc.4@trigger.dev/build@4.5.0-rc.4
Patch Changes
@trigger.dev/core@4.5.0-rc.4trigger.dev@4.5.0-rc.4
Patch Changes
@s2-dev/streamstoreto0.22.10to fix aTASK_RUN_UNCAUGHT_EXCEPTION("Invalid state: Unable to enqueue") when achat.agentturn is aborted mid-stream. (#3792)@trigger.dev/core@4.5.0-rc.4@trigger.dev/build@4.5.0-rc.4@trigger.dev/schema-to-json@4.5.0-rc.4@trigger.dev/core@4.5.0-rc.4
Patch Changes
concurrencyKeyvalues to string at the API boundary acrosstasks.trigger,tasks.batchTrigger, and the Phase-2 streaming batch endpoint. (#3789)@s2-dev/streamstoreto0.22.10to fix aTASK_RUN_UNCAUGHT_EXCEPTION("Invalid state: Unable to enqueue") when achat.agentturn is aborted mid-stream. (#3792)@trigger.dev/plugins@4.5.0-rc.4
Patch Changes
@trigger.dev/core@4.5.0-rc.4@trigger.dev/python@4.5.0-rc.4
Patch Changes
@trigger.dev/sdk@4.5.0-rc.4@trigger.dev/core@4.5.0-rc.4@trigger.dev/build@4.5.0-rc.4@trigger.dev/react-hooks@4.5.0-rc.4
Patch Changes
@trigger.dev/core@4.5.0-rc.4@trigger.dev/rsc@4.5.0-rc.4
Patch Changes
@trigger.dev/core@4.5.0-rc.4@trigger.dev/schema-to-json@4.5.0-rc.4
Patch Changes
@trigger.dev/core@4.5.0-rc.4@trigger.dev/sdk@4.5.0-rc.4
Patch Changes
Add a
toolsoption tochat.agent. Declaring your tools here threads them into the SDK's internalconvertToModelMessages, so each tool'stoModelOutputis re-applied when prior-turn history is re-converted. (#3790)Also exports
InferChatUIMessageFromTools<typeof tools>to derive the chatUIMessagetype (typed tool parts) directly from a tool set.Updated dependencies:
@trigger.dev/core@4.5.0-rc.4