chore: release v4.5.0-rc.4#3788
Conversation
0abaeba to
9a9dab9
Compare
There was a problem hiding this comment.
🚩 Server-change files deleted without corresponding changeset coverage
Four .server-changes/ files were deleted (mollifier-drainer-replay.md, mollifier-mutations.md, mollifier-reads.md, mollifier-trigger.md). Per CONTRIBUTING.md, these files document server-only changes that don't have changeset coverage. The new changesets added to pre.json (mollifier-buffer-extensions, mollifier-buffer-pipeline-list-entries, mollifier-drainer-terminal-failure-callback, mollifier-tag-cap) don't appear to cover the same features described in the deleted files (drainer replay, mutations, reads, trigger-time decisions). This may be intentional if those features shipped in a prior rc and the server-change notes are no longer needed, but it's worth confirming that the release notes for those features aren't being lost.
Was this helpful? React with 👍 or 👎 to provide feedback.
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
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