-
chore: release v4.5.0-rc.4 (#3788)
发布于
2026-06-02 08:35:14 +00:00 | 779 次提交 在此版本后已推送到 mainSummary
1 new feature, 5 improvements.
Highlights
- Mollifier
mutateSnapshotnow enforces a tag cap: anappend_tags
patch 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
- Mollifier buffer extensions: idempotency dedup, an atomic
mutateSnapshotAPI, metadata CAS, claim primitives, and a
MollifierSnapshottype. 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) - Add
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) - Bump
@s2-dev/streamstoreto0.22.10to fix a
TASK_RUN_UNCAUGHT_EXCEPTION("Invalid state: Unable to enqueue") when
achat.agentturn is aborted mid-stream.
(#3792) - Coerce numeric
concurrencyKeyvalues to string at the API boundary
acrosstasks.trigger,tasks.batchTrigger, and the Phase-2 streaming
batch endpoint.
(#3789) - 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)
Raw changeset output
⚠️⚠️⚠️⚠️⚠️⚠️
mainis currently in pre mode so this branch has prereleases
rather than normal releases. If you want to exit prereleases, run
changeset pre exitonmain.⚠️⚠️⚠️⚠️⚠️⚠️
Releases
@trigger.dev/redis-worker@4.5.0-rc.4
Minor Changes
- Mollifier buffer extensions: idempotency dedup, an atomic
mutateSnapshotAPI, metadata CAS, claim primitives, and a
MollifierSnapshottype. 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) - Add
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
- Pipeline the per-entry
HGETALLfetches in
MollifierBuffer.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) - Mollifier
mutateSnapshotnow enforces a tag cap: anappend_tags
patch 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) - Updated dependencies:
@trigger.dev/core@4.5.0-rc.4
@trigger.dev/build@4.5.0-rc.4
Patch Changes
- Updated dependencies:
@trigger.dev/core@4.5.0-rc.4
trigger.dev@4.5.0-rc.4
Patch Changes
- Bump
@s2-dev/streamstoreto0.22.10to fix a
TASK_RUN_UNCAUGHT_EXCEPTION("Invalid state: Unable to enqueue") when
achat.agentturn is aborted mid-stream.
(#3792) - Updated dependencies:
@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
- Coerce numeric
concurrencyKeyvalues to string at the API boundary
acrosstasks.trigger,tasks.batchTrigger, and the Phase-2 streaming
batch endpoint.
(#3789) - Bump
@s2-dev/streamstoreto0.22.10to fix a
TASK_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
- Updated dependencies:
@trigger.dev/core@4.5.0-rc.4
@trigger.dev/python@4.5.0-rc.4
Patch Changes
- Updated dependencies:
@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
- Updated dependencies:
@trigger.dev/core@4.5.0-rc.4
@trigger.dev/rsc@4.5.0-rc.4
Patch Changes
- Updated dependencies:
@trigger.dev/core@4.5.0-rc.4
@trigger.dev/schema-to-json@4.5.0-rc.4
Patch Changes
- Updated dependencies:
@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)chat.agent({ tools: { readFile, search }, run: async ({ messages, tools, signal }) => streamText({ model, messages, tools, abortSignal: signal }), });
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
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
下载附件
- Mollifier