1 new feature and 2 improvements.
Highlights
Named side channels on Sessions
Sessions now support named side channels: durable, two-way streams that outlive a single run and can be shared across runs. Open a channel with sessions.open(id).channel(name), or with chat.channel(name) inside a chat.agent, to get an .in/.out pair addressed by name. Writing to a side channel's .in doesn't wake or trigger a run, so channels carry out-of-band data (frame streams, control signals) that many clients can read simultaneously.
// Inside a chat.agent: stream frames on a named channelconst frames = chat.channel("screenshots");await frames.out.append(frame);frames.in.on((control) => { /* client control, no suspend */});
Define typed channel schemas once with sessions.defineChannel(...) and get type inference on both producer and consumer, including useSessionStreamChannel in React. Channels have a default retention policy to stay bounded, configurable per channel. (#4815)
Improvements
- Remove compiled test files from published packages. The
*.test.tssources were being emitted intodist, adding dead weight to every install and including modules thatrequire("vitest")(not a runtime dependency), which tripped tooling that walks every file in a package. (#4833) - Session
triggerConfig.tagsnow accepts up to 10 tags, matching the run tag limit. Previously capped at 5, which left chat agents with only 4 user tags after the automaticchat:{chatId}tag. (#4832)
How to upgrade
Update the trigger.dev/* packages to v4.5.15 using your package manager:
npx trigger.dev@latest update # npmpnpm dlx trigger.dev@latest update # pnpmyarn dlx trigger.dev@latest update # yarnbunx trigger.dev@latest update # bun
Self-hosted users: update your Docker image to ghcr.io/triggerdotdev/trigger.dev:v4.5.15.

