Repository navigation
Commit 4451f4d
authored
chore: release v4.8.2 (#5073)
## Summary
5 new features, 19 improvements, 23 bug fixes.
## Breaking changes
- Query dashboard APIs reject run tokens and public access tokens
without user delegation. Existing API key access, including restricted
keys with the required query scopes, is unchanged. MCP dashboard access
remains supported through delegated tokens for current organization
members.
- The legacy `clickhouse` event store is retired: task events now go to
`clickhouse_v2`. If you self-host with
`EVENT_REPOSITORY_DEFAULT_STORE=clickhouse`, switch it to
`clickhouse_v2` and follow the self-hosting guide to copy older events,
which no longer show until you do.
## Improvements
- Deployed tasks now keep a valid short-lived run token for their whole
run: the token is refreshed during long runs and before a run resumes
from a checkpoint. A warm-started task no longer keeps the previous
run's token when the next run has none, and run credentials are left out
of runner debug logs.
([`aa9de9d94`](aa9de9d))
- Upgrade `socket.io-client` to 4.8.4 so projects using the SDK and CLI
install `ws` 8.21 instead of 8.17.1, which has published advisories
(GHSA-96hv-2xvq-fx4p, GHSA-58qx-3vcg-4xpx). The old pin blocked
upgrading `ws` without a package manager override.
([`2df9860b4`](2df9860))
- Adds the `bun-1.4` runtime. `runtime: "bun-1.4"` deploys on Bun 1.4.4
in a Bun-only image with no Node.js binary, and the run controller
itself runs under Bun. `runtime: "bun"` is unchanged (Bun 1.3 with
Node.js alongside it); `bun-legacy` is accepted as an explicit spelling
of the same runtime. On Bun 1.4 the worker no longer crashes at startup
on the `--no-warnings=ExperimentalWarning` flag.
([`a8a87850b`](a8a8785))
- Add an experimental Convex component for triggering tasks
transactionally and reading their status and results through reactive
queries, without configuring webhooks.
([`3c1cf656c`](3c1cf65))
- Run metadata operations now reject JSON-path keys that use escaped
dots to reach `__proto__`, `constructor` or `prototype`.
([`dce5048a8`](dce5048))
- Use short-lived run tokens for supported SDK operations inside
deployed tasks when available, retaining environment-key compatibility
for unsupported operations and missing or expired tokens. Explicit
credentials still take precedence. Public-token helpers use server-side
minting with run tokens rather than signing locally.
([`5a1c14239`](5a1c142))
Project and organization queries, and branch overrides targeting another
PREVIEW or DEVELOPMENT environment, keep using compatibility
credentials. Branch headers do not change credential selection in
STAGING or PRODUCTION. Chat subscriptions reread implicit credentials
for each connection.
- `runs.subscribeToRun` now ends after the run completes. The `for
await` loop exits right after the update with the final status, and the
subscription stops its connection, so a script that subscribes to a run
exits on its own. Pass `stopOnCompletion: false` to keep the
subscription open after completion.
([`485ab83aa`](485ab83))
- Add `SupervisorHttpClient.releaseRun`, which gives back a dequeued run
the worker never started so the platform requeues it at once instead of
after the pending execution timeout.
([`ba51e5573`](ba51e55))
- The supervisor keeps its run notification subscriptions across
reconnects to the webapp, and reconnects when the webapp turns its
handshake away, so cancellations and resolved waits keep reaching
running tasks after a webapp restart or deploy.
([`a9e69ab7d`](a9e69ab))
- Asymmetric webhook sources can now verify ECDSA P-384 signatures
(`algorithm: "ecdsa-p384"`, SHA-384) and providers that sign a SHA-256
digest of the signing string (`prehash: "sha256"`). ECDSA signatures are
accepted in DER or raw `r||s` form.
([`4ed2e3780`](4ed2e37))
- The bundled `trigger-cost-savings` skill now notes that a webhook
delivery starts no run when no subscriber's filter matches, so it costs
no compute.
([#5051](#5051))
- Stream a sub-agent's reply through a parent tool call with
`chat.forwardSubAgent`. Each chunk is written to the parent chat once
and the tool resolves with the sub-agent's final message, so streaming a
sub-agent costs bytes in proportion to its reply. Yielding
`stream.messages()` snapshots resends the whole message on every chunk,
which grows with the square of the reply.
([`bdc994c4d`](bdc994c))
```ts
execute: async ({ topic }, { toolCallId, abortSignal }) => {
const stream = await researcher.sendMessage(topic, { abortSignal });
return await chat.forwardSubAgent(stream, { toolCallId });
},
```
Render it while it runs with `useSubAgentMessages()` from
`@trigger.dev/sdk/chat/react` (or `createSubAgentMessages()` outside
React).
## Bug fixes
- Fix `chat.inject` messages added from a tool mid-turn being saved
before the assistant's response. They now stay after the tool result,
where the model saw them, so the next turn keeps the same prompt prefix.
If you roll `@trigger.dev/sdk` back to an earlier version, chats saved
by this version lose these mid-turn `chat.inject` messages from the
model's context, though the chat history shown in the UI keeps them.
([`fc33769a5`](fc33769))
- Fix a `chat.agent` turn failing after a head start that ended with two
or more parallel tool calls. When those tools finished out of call
order, the agent sent their results to the model twice on the next step,
and the provider rejected the request (Anthropic: "each tool_use must
have a single result"). Each handed-over tool result is now sent once.
([`d06ee5825`](d06ee58))
## Server changes
These changes affect the self-hosted Docker image and Trigger.dev Cloud:
- Add "Ignored paths" to the Git settings: pushes and pull request
updates that only change files matching these patterns no longer create
a deployment. Ignored paths don't apply while the Vercel integration is
connected.
- The `metrics` query table now includes queue size (`queue.size.*`) and
webhook limit metrics (`webhook.waiters.*`, `webhook.processing.*`,
`webhook.ingress.*`), so you can chart and alert on queue capacity and
webhook rate limits.
- New Limits alerts: watch the limits that can interrupt or degrade
runtime flow, one at a time or combined into a single alert with "any"
or "all" and the signals you choose (limit reached or approaching), in
the dashboard, the API and the agent.
- Expand short-lived run-token support to task APIs, with permission
checks for packets, metadata, streams and waits. Run tokens last one
hour independently of root-key rotation and cannot be individually
revoked. They can mint public access tokens for up to 30 days; those
tokens may outlive the run token that minted them.
- Hosted webhook endpoints can verify ECDSA P-384 (SHA-384) signatures,
ECDSA signatures in raw `r||s` form, and RSA signatures made over a
SHA-256 digest of the signing string (`prehash: "sha256"`).
- Older runs now load their trace, span details and run events faster. A
span that finishes more than a week after its run shows as still in
progress.
- The run page now loads large traces progressively and updates live
runs incrementally, so big traces open faster and open run pages no
longer reload the whole trace while a run is executing. The run trace
API can also page large traces.
- Query alerts now accept queries whose columns are computed from other
aggregate columns, such as a percentage of two aggregates. When a query
can't be watched, the Watch button stays visible but disabled and
explains why.
- Archiving unused queues from the Concurrency page is now available on
all instances, including self-hosted.
- Runs whose container or pod could not be created, or whose pod failed
before the run started, can now be requeued straight away instead of
waiting for the pending execution timeout. Both are off by default: set
`RELEASE_UNSTARTED_RUNS_ENABLED=true` on a supervisor for creates that
fail, and `RELEASE_FAILED_POD_RUNS_ENABLED=true` for pods that fail.
- Session external ids can no longer contain a `/channels` path segment
(for example `chat-1/channels/support`) or end in `:channels`, since
both forms name a session's channels. Creating a session with one now
returns a 422 validation error.
- Selecting a span that started a session now shows a link to that
session in the span panel, so you can jump from an orchestrator's run to
its sub-agents.
- Fix the batch results API returning an empty list of items for
completed batches. It now returns every run's result in trigger order.
- Fix the batch results API returning "Batch not found" for some batches
that the batch retrieve API could see.
- Fix the run page continuing to live-update forever for some cancelled
runs. These runs now show as finished, and loading their trace is
faster.
- Fix fetching the trace of a child run through the API sometimes being
very slow or failing. These requests now return quickly.
- Run metadata changes sent with an attempt's completion, such as
increments and appends, are no longer applied a second time when a
completion that already went through is retried.
- Changing your email address now requires clicking a confirmation
button after opening the emailed link.
- Fix intermittent read and subscription errors when multiple clients
first open the same realtime stream.
- Fix intermittent subscription failures and missed records when reading
newly created realtime streams.
- Fix the dashboard's task list and task filters occasionally going
stale when several `trigger dev` sessions register at the same time.
- Deleting an organization now cancels its billing subscription.
- Fix the dashboard agent's suggested threshold and window being dropped
when it prefills a query alert.
- Queries now reject an alias that reuses a table's alias in the same
SELECT, unless the aliased expression contains an aggregate or window
function (`count() AS runs FROM runs` still works).
- Queries using `WITH <expression> AS <name>` now run instead of failing
with a syntax error, and the name can be used in the rest of the query.
The name can't reuse a table alias used anywhere in the query.
- Fix a rare case where clock skew between run engine instances could
leave a run executing after its task finished, or stop a wait from ever
resuming. A run's state changes are now always ordered in the order they
happened, regardless of clock skew.
- A run whose attempt start was interrupted no longer gets stuck
executing without its task ever running, then failing as stalled.
- Fixed dropdowns sometimes picking an option by themselves when typing
with some on-screen keyboards or autofill.
- New runs a session starts are now always linked to their session, so
their Agent tab no longer fails to load because the link was missing.
- Runs no longer lose their worker's token when the cluster answers the
worker's create with a 408, so the worker starts instead of waiting for
a requeue.
- Runs no longer lose their worker's token when a concurrent delivery or
a lost answer leaves a failed worker create's token behind: the worker
that took the name keeps it, and a token nothing will use is cleaned up
instead of being kept.
- Deleting an organization now uninstalls its Vercel integration. A
Vercel installation disabled on Vercel's side is reported as such
instead of as an expired connection, and removing it no longer reports
success.
- Promoting or rolling back a deployment now updates your webhook
endpoints to match the deployment that's now current.
<details>
<summary>Raw changeset output</summary>
# Releases
## @trigger.dev/build@4.8.2
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.8.2`
## trigger.dev@4.8.2
### Patch Changes
- Deployed tasks now keep a valid short-lived run token for their whole
run: the token is refreshed during long runs and before a run resumes
from a checkpoint. A warm-started task no longer keeps the previous
run's token when the next run has none, and run credentials are left out
of runner debug logs.
([`aa9de9d94`](aa9de9d))
- Upgrade `socket.io-client` to 4.8.4 so projects using the SDK and CLI
install `ws` 8.21 instead of 8.17.1, which has published advisories
(GHSA-96hv-2xvq-fx4p, GHSA-58qx-3vcg-4xpx). The old pin blocked
upgrading `ws` without a package manager override.
([`2df9860b4`](2df9860))
- Adds the `bun-1.4` runtime. `runtime: "bun-1.4"` deploys on Bun 1.4.4
in a Bun-only image with no Node.js binary, and the run controller
itself runs under Bun. `runtime: "bun"` is unchanged (Bun 1.3 with
Node.js alongside it); `bun-legacy` is accepted as an explicit spelling
of the same runtime. On Bun 1.4 the worker no longer crashes at startup
on the `--no-warnings=ExperimentalWarning` flag.
([`a8a87850b`](a8a8785))
- Updated dependencies:
- `@trigger.dev/core@4.8.2`
- `@trigger.dev/build@4.8.2`
- `@trigger.dev/schema-to-json@4.8.2`
## @trigger.dev/convex@4.8.2
### Patch Changes
- Add an experimental Convex component for triggering tasks
transactionally and reading their status and results through reactive
queries, without configuring webhooks.
([`3c1cf656c`](3c1cf65))
## @trigger.dev/core@4.8.2
### Patch Changes
- Run metadata operations now reject JSON-path keys that use escaped
dots to reach `__proto__`, `constructor` or `prototype`.
([`dce5048a8`](dce5048))
- Deployed tasks now keep a valid short-lived run token for their whole
run: the token is refreshed during long runs and before a run resumes
from a checkpoint. A warm-started task no longer keeps the previous
run's token when the next run has none, and run credentials are left out
of runner debug logs.
([`aa9de9d94`](aa9de9d))
- Use short-lived run tokens for supported SDK operations inside
deployed tasks when available, retaining environment-key compatibility
for unsupported operations and missing or expired tokens. Explicit
credentials still take precedence. Public-token helpers use server-side
minting with run tokens rather than signing locally.
([`5a1c14239`](5a1c142))
Project and organization queries, and branch overrides targeting another
PREVIEW or DEVELOPMENT environment, keep using compatibility
credentials. Branch headers do not change credential selection in
STAGING or PRODUCTION. Chat subscriptions reread implicit credentials
for each connection.
- Upgrade `socket.io-client` to 4.8.4 so projects using the SDK and CLI
install `ws` 8.21 instead of 8.17.1, which has published advisories
(GHSA-96hv-2xvq-fx4p, GHSA-58qx-3vcg-4xpx). The old pin blocked
upgrading `ws` without a package manager override.
([`2df9860b4`](2df9860))
- `runs.subscribeToRun` now ends after the run completes. The `for
await` loop exits right after the update with the final status, and the
subscription stops its connection, so a script that subscribes to a run
exits on its own. Pass `stopOnCompletion: false` to keep the
subscription open after completion.
([`485ab83aa`](485ab83))
- Add `SupervisorHttpClient.releaseRun`, which gives back a dequeued run
the worker never started so the platform requeues it at once instead of
after the pending execution timeout.
([`ba51e5573`](ba51e55))
- The supervisor keeps its run notification subscriptions across
reconnects to the webapp, and reconnects when the webapp turns its
handshake away, so cancellations and resolved waits keep reaching
running tasks after a webapp restart or deploy.
([`a9e69ab7d`](a9e69ab))
- Adds the `bun-1.4` runtime. `runtime: "bun-1.4"` deploys on Bun 1.4.4
in a Bun-only image with no Node.js binary, and the run controller
itself runs under Bun. `runtime: "bun"` is unchanged (Bun 1.3 with
Node.js alongside it); `bun-legacy` is accepted as an explicit spelling
of the same runtime. On Bun 1.4 the worker no longer crashes at startup
on the `--no-warnings=ExperimentalWarning` flag.
([`a8a87850b`](a8a8785))
- Asymmetric webhook sources can now verify ECDSA P-384 signatures
(`algorithm: "ecdsa-p384"`, SHA-384) and providers that sign a SHA-256
digest of the signing string (`prehash: "sha256"`). ECDSA signatures are
accepted in DER or raw `r||s` form.
([`4ed2e3780`](4ed2e37))
## @trigger.dev/linear@4.8.2
### Patch Changes
- Updated dependencies:
- `@trigger.dev/sdk@4.8.2`
- `@trigger.dev/core@4.8.2`
## @trigger.dev/python@4.8.2
### Patch Changes
- Updated dependencies:
- `@trigger.dev/sdk@4.8.2`
- `@trigger.dev/core@4.8.2`
- `@trigger.dev/build@4.8.2`
## @trigger.dev/react-hooks@4.8.2
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.8.2`
## @trigger.dev/redis-worker@4.8.2
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.8.2`
## @trigger.dev/rsc@4.8.2
### Patch Changes
- Adds the `bun-1.4` runtime. `runtime: "bun-1.4"` deploys on Bun 1.4.4
in a Bun-only image with no Node.js binary, and the run controller
itself runs under Bun. `runtime: "bun"` is unchanged (Bun 1.3 with
Node.js alongside it); `bun-legacy` is accepted as an explicit spelling
of the same runtime. On Bun 1.4 the worker no longer crashes at startup
on the `--no-warnings=ExperimentalWarning` flag.
([`a8a87850b`](a8a8785))
- Updated dependencies:
- `@trigger.dev/core@4.8.2`
## @trigger.dev/schema-to-json@4.8.2
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.8.2`
## @trigger.dev/slack@4.8.2
### Patch Changes
- Updated dependencies:
- `@trigger.dev/sdk@4.8.2`
- `@trigger.dev/core@4.8.2`
## @trigger.dev/sdk@4.8.2
### Patch Changes
- Fix `chat.inject` messages added from a tool mid-turn being saved
before the assistant's response. They now stay after the tool result,
where the model saw them, so the next turn keeps the same prompt prefix.
If you roll `@trigger.dev/sdk` back to an earlier version, chats saved
by this version lose these mid-turn `chat.inject` messages from the
model's context, though the chat history shown in the UI keeps them.
([`fc33769a5`](fc33769))
- The bundled `trigger-cost-savings` skill now notes that a webhook
delivery starts no run when no subscriber's filter matches, so it costs
no compute.
([#5051](#5051))
- Stream a sub-agent's reply through a parent tool call with
`chat.forwardSubAgent`. Each chunk is written to the parent chat once
and the tool resolves with the sub-agent's final message, so streaming a
sub-agent costs bytes in proportion to its reply. Yielding
`stream.messages()` snapshots resends the whole message on every chunk,
which grows with the square of the reply.
([`bdc994c4d`](bdc994c))
```ts
execute: async ({ topic }, { toolCallId, abortSignal }) => {
const stream = await researcher.sendMessage(topic, { abortSignal });
return await chat.forwardSubAgent(stream, { toolCallId });
},
```
Render it while it runs with `useSubAgentMessages()` from
`@trigger.dev/sdk/chat/react` (or `createSubAgentMessages()` outside
React).
- Fix a `chat.agent` turn failing after a head start that ended with two
or more parallel tool calls. When those tools finished out of call
order, the agent sent their results to the model twice on the next step,
and the provider rejected the request (Anthropic: "each tool_use must
have a single result"). Each handed-over tool result is now sent once.
([`d06ee5825`](d06ee58))
- Use short-lived run tokens for supported SDK operations inside
deployed tasks when available, retaining environment-key compatibility
for unsupported operations and missing or expired tokens. Explicit
credentials still take precedence. Public-token helpers use server-side
minting with run tokens rather than signing locally.
([`5a1c14239`](5a1c142))
Project and organization queries, and branch overrides targeting another
PREVIEW or DEVELOPMENT environment, keep using compatibility
credentials. Branch headers do not change credential selection in
STAGING or PRODUCTION. Chat subscriptions reread implicit credentials
for each connection.
- Updated dependencies:
- `@trigger.dev/core@4.8.2`
</details>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>1 parent 48316a8 commit 4451f4d
75 files changed
Lines changed: 171 additions & 345 deletions
File tree
- .changeset
- .server-changes
- hosting/k8s/helm
- packages
- build
- cli-v3
- convex
- core
- linear
- python
- react-hooks
- redis-worker
- rsc
- schema-to-json
- slack
- trigger-sdk
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
0 commit comments