Skip to content

[pull] main from triggerdotdev:main - #740

Merged
pull[bot] merged 5 commits into
erickirt:mainfrom
triggerdotdev:main
Sep 18, 2026
Merged

pull[bot] merged 5 commits into
erickirt:mainfrom
triggerdotdev:main

Conversation

@pull

@pull pull Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

matt-aitken and others added 5 commits September 18, 2026 10:02
…, overrides, metrics, and management API

Queues get richer concurrency controls: a total concurrency limit across
all concurrency keys of a queue (alongside the existing per-key limit),
named concurrency limits declared in code and shared across tasks, and
trigger-time selection between them. The dashboard gains a Concurrency
page with per-queue metrics charts and an override dialog for per-key
and total bounds, plus a management API for listing, retrieving,
overriding and resetting concurrency limits. Chat sessions can set
concurrency options when triggering. Run admission gates in the engine
enforce the new limits and are off by default behind
RUN_ENGINE_QUEUE_GATES_ENABLED.

Mono-RevId: b8b2c98fae12cf9abb09b3f1349fd828d053ab70
…run() (#4952)

## Summary

Idempotency keys deduplicate task triggers (`trigger()`,
`triggerAndWait()`, `batchTrigger()`). They do not make the code inside
a task's `run()` idempotent: when a run retries, `run()` executes again
from the top, and any API call inside it happens again unless that call
is itself idempotent.

The idempotency page listed "avoiding double-charging customers" as a
use case, but every example on the page only ever deduplicated a child
trigger, so a reader could reasonably assume a payment call made
directly inside a retryable `run()` was protected. It is not, and no
Trigger.dev-side mechanism can protect it: only the payment provider can
deduplicate its own API call, so the provider's idempotency key has to
be passed too.

This is a docs-only change. No SDK changes.

## What changed

- The intro now states the boundary up front: the key applies to the
trigger call and nothing else.
- The use-case bullets say "trigger the X task once" rather than
implying the side effect itself is deduplicated, and the payments bullet
points at the new section.
- A new "Side effects inside `run()`" section explains why moving the
call into a child task does not close the gap either, and shows a Stripe
refund passing Stripe's `idempotencyKey` alongside a Trigger.dev key for
the follow-up email trigger.

Addresses the documentation side of
[#4627](#4627).
Supersedes
[#4650](#4650), which
was auto-closed by the vouch gate.
Keep steering messages in context across later agent steps and preserve
their original position in saved conversations and subsequent turns.
Persist managed custom response data in stream order and retain prepared
steering input when a conversation resumes in a new worker.

Mono-RevId: 0c642ea561d632dabb68ad024aaff4e7e708d114
Mono-RevId: 5997ba1b23b730bd390acfc3ddd3c8c60f06e00a
)

## Summary

Follow-up to
[#4952](#4952). The new
"Side effects inside `run()`" section told readers to derive the
provider's idempotency key from a payload ID, but the more general
answer is the run ID: `ctx.run.id` is stable across every attempt of a
run, is always available, and is the same value the default `run` scope
already mixes into a Trigger.dev idempotency key.

The Stripe refund example now keys the provider call on `ctx.run.id`,
and a short paragraph explains when a business ID from the payload is
the better choice (when the same task can be triggered more than once
for the same order and you want deduplication across separate runs).

Docs only.
@pull pull Bot locked and limited conversation to collaborators Sep 18, 2026
@pull pull Bot added the ⤵️ pull label Sep 18, 2026
@pull
pull Bot merged commit c84bf7f into erickirt:main Sep 18, 2026
3 of 8 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants