@trigger.dev/sdk 4.7.4 → 4.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/commonjs/v3/ai.d.ts +26 -0
  2. package/dist/commonjs/v3/ai.js +7 -5
  3. package/dist/commonjs/v3/ai.js.map +1 -1
  4. package/dist/commonjs/v3/query.d.ts +434 -1
  5. package/dist/commonjs/v3/query.js +115 -0
  6. package/dist/commonjs/v3/query.js.map +1 -1
  7. package/dist/commonjs/version.js +1 -1
  8. package/dist/esm/v3/ai.d.ts +26 -0
  9. package/dist/esm/v3/ai.js +7 -5
  10. package/dist/esm/v3/ai.js.map +1 -1
  11. package/dist/esm/v3/query.d.ts +434 -1
  12. package/dist/esm/v3/query.js +115 -0
  13. package/dist/esm/v3/query.js.map +1 -1
  14. package/dist/esm/version.js +1 -1
  15. package/docs/ai-chat/actions.mdx +6 -1
  16. package/docs/ai-chat/backend.mdx +47 -0
  17. package/docs/ai-chat/patterns/redacting-telemetry.mdx +117 -0
  18. package/docs/ai-chat/pending-messages.mdx +2 -0
  19. package/docs/ai-chat/reference.mdx +53 -2
  20. package/docs/ai-chat/transcript-storage.mdx +1 -1
  21. package/docs/apikeys.mdx +6 -4
  22. package/docs/cli-runs-commands.mdx +2 -2
  23. package/docs/cli-tasks-commands.mdx +95 -0
  24. package/docs/config/config-file.mdx +58 -0
  25. package/docs/config/extensions/prismaExtension.mdx +4 -4
  26. package/docs/deploy-environment-variables.mdx +4 -0
  27. package/docs/deployment/atomic-deployment.mdx +3 -3
  28. package/docs/deployment/overview.mdx +1 -1
  29. package/docs/deployment/preview-branches.mdx +1 -1
  30. package/docs/github-actions.mdx +3 -3
  31. package/docs/limits.mdx +6 -0
  32. package/docs/manual-setup.mdx +1 -1
  33. package/docs/mcp-tools.mdx +99 -3
  34. package/docs/observability/dashboards.mdx +62 -0
  35. package/docs/runs/max-duration.mdx +4 -0
  36. package/docs/self-hosting/env/supervisor.mdx +1 -0
  37. package/docs/webhooks/channels.mdx +158 -0
  38. package/docs/webhooks/connect.mdx +84 -0
  39. package/docs/webhooks/deliveries.mdx +103 -0
  40. package/docs/webhooks/filters.mdx +150 -0
  41. package/docs/webhooks/human-in-the-loop.mdx +162 -0
  42. package/docs/webhooks/linear.mdx +190 -0
  43. package/docs/webhooks/overview.mdx +119 -0
  44. package/docs/webhooks/session-routing.mdx +145 -0
  45. package/docs/webhooks/slack.mdx +397 -0
  46. package/docs/webhooks/sources.mdx +224 -0
  47. package/docs/webhooks/waiters.mdx +194 -0
  48. package/package.json +3 -2
@@ -0,0 +1,224 @@
1
+ ---
2
+ title: "Sources and verification"
3
+ description: "Choose an endpoint's source, configure verification, and type the event its subscribers receive."
4
+ sidebarTitle: "Sources & verification"
5
+ ---
6
+
7
+ import WebhooksBetaBanner from "/snippets/webhooks-beta-banner.mdx";
8
+
9
+ <WebhooksBetaBanner />
10
+
11
+ An endpoint's `source` defines how Trigger.dev verifies requests and types the event every subscriber receives. Choose a named provider source or supply a verification configuration with `webhooks.custom()`.
12
+
13
+ ## Presets
14
+
15
+ Presets supply the verification configuration, and most also carry the provider's part of the endpoint's [setup prompt](/webhooks/connect#set-it-up-with-an-ai-agent). Set the endpoint's signing secret or public key as described in [Connect a provider](/webhooks/connect).
16
+
17
+ <CodeGroup>
18
+
19
+ ```ts /trigger/stripe.ts
20
+ import { webhook, webhooks } from "@trigger.dev/sdk";
21
+
22
+ export const stripe = webhooks.endpoint.define({ id: "stripe", source: webhooks.stripe() });
23
+
24
+ export const stripeEvents = webhook({
25
+ id: "stripe-events",
26
+ endpoint: stripe,
27
+ onEvent: async ({ event }) => {
28
+ if (event.type === "payment_intent.succeeded") {
29
+ console.log(event.id);
30
+ }
31
+ },
32
+ });
33
+ ```
34
+
35
+ ```ts /trigger/github.ts
36
+ import { webhook, webhooks } from "@trigger.dev/sdk";
37
+
38
+ export const github = webhooks.endpoint.define({ id: "github", source: webhooks.github() });
39
+
40
+ export const githubEvents = webhook({
41
+ id: "github-events",
42
+ endpoint: github,
43
+ onEvent: async ({ headers }) => {
44
+ // GitHub puts the event type in a header
45
+ console.log(headers.get("x-github-event"));
46
+ },
47
+ });
48
+ ```
49
+
50
+ ```ts /trigger/svix.ts
51
+ import { webhook, webhooks } from "@trigger.dev/sdk";
52
+
53
+ export const svix = webhooks.endpoint.define({ id: "svix", source: webhooks.svix() });
54
+
55
+ export const svixEvents = webhook({
56
+ id: "svix-events",
57
+ endpoint: svix,
58
+ onEvent: async ({ event }) => {
59
+ console.log(event);
60
+ },
61
+ });
62
+ ```
63
+
64
+ ```ts /trigger/composio.ts
65
+ import { webhook, webhooks } from "@trigger.dev/sdk";
66
+
67
+ export const composio = webhooks.endpoint.define({ id: "composio", source: webhooks.standardWebhooks() });
68
+
69
+ export const composioEvents = webhook({
70
+ id: "composio-events",
71
+ endpoint: composio,
72
+ onEvent: async ({ event }) => {
73
+ console.log(event);
74
+ },
75
+ });
76
+ ```
77
+
78
+ </CodeGroup>
79
+
80
+ The available presets are `stripe()`, `github()`, `svix()`, `standardWebhooks()`, `square()`, and `discord()`.
81
+
82
+ ### Svix and Standard Webhooks
83
+
84
+ `svix()` and `standardWebhooks()` use HMAC-SHA256 over `id.timestamp.body` with a base64-encoded `whsec_` secret. Their header names differ:
85
+
86
+ | Source | Headers |
87
+ | --- | --- |
88
+ | `svix()` | `svix-id`, `svix-timestamp`, `svix-signature` |
89
+ | `standardWebhooks()` | `webhook-id`, `webhook-timestamp`, `webhook-signature` |
90
+
91
+ Named sources such as `webhooks.clerk()` and `webhooks.composio()` select the corresponding configuration.
92
+
93
+ ## Named providers
94
+
95
+ Each function below returns a source with its provider's verification configuration. Call it through `webhooks`, for example `webhooks.calCom()`.
96
+
97
+ | Verification | Source functions |
98
+ | --- | --- |
99
+ | Svix | `clerk()`, `resend()`, `brex()`, `autumn()` |
100
+ | Standard Webhooks | `openai()`, `replicate()`, `recallai()`, `composio()`, `loops()`, `granola()` |
101
+ | HMAC-SHA256 with `X-Hub-Signature-256` | `whatsapp()` |
102
+ | Shared secret in `X-Gitlab-Token` | `gitlab()` |
103
+ | Shared secret as `Authorization: Bearer` | `supabase()` |
104
+ | Provider-specific HMAC | `calendly()`, `calCom()`, `sentry()`, `pagerduty()`, `vercel()`, `linear()`, `notion()`, `typeform()`, `docusign()`, `jira()`, `intercom()`, `zendesk()`, `attio()`, `workos()`, `elevenlabs()`, `vapi()`, `retell()`, `shopify()`, `metronome()`, `mux()`, `tailscale()`, `langfuse()`, `infisical()`, `planetscale()`, `plain()`, `firecrawl()` |
105
+
106
+ Provider IDs containing a hyphen use a camel case function name: the `cal-com` provider is `webhooks.calCom()`.
107
+
108
+ Supabase database webhooks aren't signed, so `supabase()` checks a shared secret instead. Generate the endpoint's secret on Trigger.dev, then add an `Authorization` header with the value `Bearer <secret>` under the webhook's HTTP Headers in Supabase.
109
+
110
+ Slack also ships as a chat channel in `@trigger.dev/slack`.
111
+
112
+ ## Endpoint validation
113
+
114
+ Some sources also define a response for the provider's endpoint-validation request. These requests don't create deliveries or task runs.
115
+
116
+ `discord()` answers a verified `{ type: 0 }` PING with HTTP `204` and no body. It also returns `204` for accepted events and `401` for invalid signatures. Set the Discord application's public key as the endpoint's verification credential.
117
+
118
+ Slack's `url_verification` challenge is handled the same way by `@trigger.dev/slack`.
119
+
120
+ `whatsapp()` answers Meta's GET verification request when `hub.mode` is `subscribe` and `hub.verify_token` matches the endpoint's verify token. It returns `hub.challenge` as text. The verify token is separate from the App Secret used to verify event signatures; see [Verify a WhatsApp endpoint URL](/webhooks/connect#verify-a-whatsapp-endpoint-url). Endpoints without GET verification return `405` to GET requests.
121
+
122
+ ## Custom providers
123
+
124
+ `webhooks.custom()` accepts a verification configuration. This source verifies an HMAC-SHA256 signature over the raw body in `x-webhook-signature` and uses the event's `id` for deduplication:
125
+
126
+ ```ts /trigger/internal.ts
127
+ import { webhook, webhooks } from "@trigger.dev/sdk";
128
+
129
+ export const internal = webhooks.endpoint.define({
130
+ id: "internal",
131
+ source: webhooks.custom<{ id: string; message: string }>(
132
+ {
133
+ scheme: "hmac",
134
+ algorithm: "sha256",
135
+ encoding: "hex",
136
+ signatureHeader: "x-webhook-signature",
137
+ signingString: "raw",
138
+ idempotencyField: { from: "body", name: "id" },
139
+ },
140
+ { setupPrompt: "Add the URL under Settings > Webhooks in the admin app and paste the secret there." }
141
+ ),
142
+ });
143
+
144
+ export const internalEvents = webhook({
145
+ id: "internal-events",
146
+ endpoint: internal,
147
+ onEvent: async ({ event }) => {
148
+ console.log(event.message);
149
+ },
150
+ });
151
+ ```
152
+
153
+ The optional `setupPrompt` is the provider-specific part of the endpoint's [setup prompt](/webhooks/connect#set-it-up-with-an-ai-agent): where the provider's webhook settings are and how to register a URL there. Trigger.dev adds the URL, the subscribers' filters and the signing secret steps around it.
154
+
155
+ ### Form-encoded bodies
156
+
157
+ A verified body sent as `application/x-www-form-urlencoded` reaches subscribers as an object of its fields, so filters, `chat.event` keys and waiter `match` paths read form fields the way they read JSON fields. A repeated field becomes an array of its values. Slack slash commands and other providers that post forms work this way.
158
+
159
+ By default an accepted request gets a `200` with a small JSON receipt. Some providers show the response body to the user who triggered the request, so pass `response: { acceptedBody: "empty" }` to answer with an empty `200` instead:
160
+
161
+ ```ts /trigger/forms.ts
162
+ import { webhook, webhooks } from "@trigger.dev/sdk";
163
+
164
+ export const forms = webhooks.endpoint.define({
165
+ id: "forms",
166
+ source: webhooks.custom<{ command: string; text: string; user_id: string }>(
167
+ { scheme: "url-secret", placement: "query", paramName: "token" },
168
+ { response: { acceptedBody: "empty" } }
169
+ ),
170
+ });
171
+
172
+ export const commands = webhook({
173
+ id: "commands",
174
+ endpoint: forms,
175
+ filter: "event.command == '/deploy'",
176
+ onEvent: async ({ event }) => {
177
+ console.log(event.user_id, event.text);
178
+ },
179
+ });
180
+ ```
181
+
182
+ ## Typing the event
183
+
184
+ Stripe and GitHub sources provide default event shapes; other sources default to `unknown`. Pass an event type to the source function for typed handler parameters and autocomplete. This example uses `Stripe.Event` from the `stripe` package, which must be installed in your project:
185
+
186
+ ```ts /trigger/stripe.ts
187
+ import type Stripe from "stripe";
188
+ import { webhook, webhooks } from "@trigger.dev/sdk";
189
+
190
+ export const stripe = webhooks.endpoint.define({ id: "stripe", source: webhooks.stripe<Stripe.Event>() });
191
+
192
+ export const stripeEvents = webhook({
193
+ id: "stripe-events",
194
+ endpoint: stripe,
195
+ onEvent: async ({ event }) => {
196
+ console.log(event.type, event.id);
197
+ },
198
+ });
199
+ ```
200
+
201
+ For `webhooks.custom<T>()`, pass your own event type as `T`. The endpoint's event type flows to every subscriber: `webhook()` handlers, `chat.event` keys and filters, and [waiter](/webhooks/waiters) `match` paths are all checked against it.
202
+
203
+ <Note>
204
+ Event types are compile-time annotations. Signature verification doesn't validate the body against
205
+ a TypeScript type. Validate `event` inside `onEvent` if your handler needs runtime schema checks.
206
+ </Note>
207
+
208
+ ## Verification schemes
209
+
210
+ Requests must pass verification before they reach any subscriber. Sources can check a signature or credential, enforce a timestamp tolerance, and derive an idempotency key for [deduplication](/webhooks/deliveries#deduplication). Verification failures return the source's rejected HTTP status (`400` by default).
211
+
212
+ Custom sources support these schemes:
213
+
214
+ | Scheme | Verification |
215
+ | --- | --- |
216
+ | `hmac` | Computes an HMAC over the raw body or a signing template and compares it with a request header. |
217
+ | `shared-secret` | Compares a static token supplied in a header, bearer token, basic authentication, or request body. |
218
+ | `url-secret` | Compares a token in a URL query parameter. Hosted endpoints don't support path placement. |
219
+ | `asymmetric` | Verifies an Ed25519, ECDSA, or RSA signature using the provider's public key. |
220
+
221
+ <Warning>
222
+ Query parameters can appear in access logs, proxies, and traces. Prefer a header-based scheme when
223
+ the provider supports one.
224
+ </Warning>
@@ -0,0 +1,194 @@
1
+ ---
2
+ title: "Waiting for a webhook"
3
+ description: "Pause a run until a matching webhook arrives on an endpoint, then resume it with the verified event."
4
+ sidebarTitle: "Waiters"
5
+ ---
6
+
7
+ import WebhooksBetaBanner from "/snippets/webhooks-beta-banner.mdx";
8
+
9
+ <WebhooksBetaBanner />
10
+
11
+ **A waiter pauses a run until a matching delivery arrives on an [endpoint](/webhooks/overview).** Use it when your task starts something in another system and needs to know when that system reports back: a payment that settles, a build that finishes, a document that gets signed.
12
+
13
+ ```ts /trigger/checkout.ts
14
+ import { task, webhooks } from "@trigger.dev/sdk";
15
+ import { stripe } from "./stripe"; // webhooks.endpoint.define({ id: "stripe", source: webhooks.stripe() })
16
+
17
+ export const checkout = task({
18
+ id: "checkout",
19
+ run: async ({
20
+ orderId,
21
+ customerId,
22
+ paymentMethodId,
23
+ }: {
24
+ orderId: string;
25
+ customerId: string;
26
+ paymentMethodId: string;
27
+ }) => {
28
+ const waiter = await webhooks.waiter.create(stripe, {
29
+ match: {
30
+ "event.type": "payment_intent.succeeded",
31
+ "event.data.object.metadata.orderId": orderId,
32
+ },
33
+ timeout: "1h",
34
+ // the same waiter (and its event) if this run is retried
35
+ idempotencyKey: `payment-${orderId}`,
36
+ });
37
+
38
+ // confirm: true charges the customer's saved payment method now, so Stripe sends payment_intent.succeeded.
39
+ // Stripe's own idempotency key stops a retry from creating a second intent for the order.
40
+ await stripeClient.paymentIntents.create(
41
+ {
42
+ amount: 4200,
43
+ currency: "usd",
44
+ customer: customerId,
45
+ payment_method: paymentMethodId,
46
+ confirm: true,
47
+ metadata: { orderId },
48
+ },
49
+ { idempotencyKey: `payment-intent-${orderId}` }
50
+ );
51
+
52
+ const { event, deliveryId } = await webhooks.waiter.wait(waiter).unwrap();
53
+ return { paymentIntent: event.data.object.id, deliveryId };
54
+ },
55
+ });
56
+ ```
57
+
58
+ While the run waits it is suspended, so it uses no compute. The endpoint's other subscribers still receive the delivery.
59
+
60
+ ## Create before you act
61
+
62
+ A waiter only matches deliveries that arrive after it was created. Create it before the call that makes the provider send the webhook, as above, or a fast provider can deliver the event before anything is waiting for it.
63
+
64
+ Match on values you control, such as your own order id in the provider object's metadata. Two runs waiting for the same values are both resumed by the delivery.
65
+
66
+ ## Matching
67
+
68
+ `match` maps paths to the scalar each must equal. Paths use the same namespaces as a [filter](/webhooks/filters):
69
+
70
+ | Path | Reads |
71
+ | --- | --- |
72
+ | `event.*` | The verified event body, for example `event.data.object.id`. |
73
+ | `header.*` | A request header, matched case-insensitively, for example `header.x-shop-domain`. |
74
+ | `webhook.*` | The endpoint: `id`, `source`, `externalRef`, `tenantId`, or `deliveryId`. |
75
+
76
+ A waiter can match up to five paths, and each value is a string, number or boolean. Paths are checked against the endpoint's event type at build time: an unknown field on a typed event, a path to an object, or a path without a namespace is a type error. The API refuses the same paths at create time.
77
+
78
+ For conditions that aren't equality, add a `filter`. It is checked after `match`:
79
+
80
+ ```ts
81
+ await webhooks.waiter.create(stripe, {
82
+ match: { "event.data.object.metadata.orderId": orderId },
83
+ filter: "event.type in ['payment_intent.succeeded', 'payment_intent.payment_failed']",
84
+ });
85
+ ```
86
+
87
+ ## The result
88
+
89
+ `webhooks.waiter.wait(waiter)` returns a result you can check, and `.unwrap()` returns the output or throws:
90
+
91
+ ```ts
92
+ const result = await webhooks.waiter.wait(waiter);
93
+ if (result.ok) {
94
+ console.log(result.output.event, result.output.headers, result.output.endpoint);
95
+ } else {
96
+ console.log(result.error.name); // "WaitpointTimeoutError" or "WebhookWaiterCancelledError"
97
+ }
98
+ ```
99
+
100
+ | Output field | Value |
101
+ | --- | --- |
102
+ | `event` | The verified event body, typed by the endpoint's source. |
103
+ | `headers` | The request headers, with credentials such as signatures removed. |
104
+ | `deliveryId` | The delivery that resumed the run (`whd_...`). |
105
+ | `endpoint` | The endpoint the delivery arrived on. |
106
+
107
+ `timeout` accepts a duration such as `"30m"` or a `Date`. It defaults to 24 hours and can be up to 90 days. A waiter that times out fails the wait with `WaitpointTimeoutError`.
108
+
109
+ A waiter is a [waitpoint](/wait-for-token): its id starts with `waitpoint_` and it is tagged `webhook:<endpoint id>` plus any `tags` you pass (up to 10).
110
+
111
+ ## Providers that take a callback URL
112
+
113
+ Some providers accept a webhook URL per request instead of one account-wide URL, such as Replicate's `webhook` parameter. Omit `match` and the waiter gets its own URL:
114
+
115
+ ```ts
116
+ const waiter = await webhooks.waiter.create(replicateEndpoint, { timeout: "2h" });
117
+
118
+ await replicate.predictions.create({ version, input, webhook: waiter.url });
119
+
120
+ const { event } = await webhooks.waiter.wait(waiter).unwrap();
121
+ ```
122
+
123
+ A delivery to `waiter.url` is verified with the endpoint's source, resumes only that waiter, and is not sent to the endpoint's subscribers.
124
+
125
+ ## Creating from your backend
126
+
127
+ `webhooks.waiter.create` also works outside a run, for example in the API route that starts a checkout. Pass the waiter, or its id, to a task that waits on it:
128
+
129
+ ```ts
130
+ const waiter = await webhooks.waiter.create(stripe, { match: { "event.data.object.metadata.orderId": orderId } });
131
+ await fulfillWhenPaid.trigger({ waiterId: waiter.id });
132
+ ```
133
+
134
+ ```ts
135
+ export const fulfillWhenPaid = task({
136
+ id: "fulfill-when-paid",
137
+ run: async ({ waiterId }: { waiterId: string }) => {
138
+ const { event } = await webhooks.waiter.wait(waiterId).unwrap();
139
+ },
140
+ });
141
+ ```
142
+
143
+ The same operations are on the REST API: [`POST /api/v1/webhooks/endpoints/{endpointId}/waiters`](/management/webhooks/create-waiter) with `match`, `filter`, `timeout`, `tags` and `idempotencyKey`, and [`POST /api/v1/webhooks/waiters/{waiterId}/cancel`](/management/webhooks/cancel-waiter). `endpointId` is the endpoint's declared id or its `wh_` id.
144
+
145
+ ## Retries and idempotency
146
+
147
+ Pass an `idempotencyKey` so a task can be retried without losing its webhook. A create with a key it has seen returns the original waiter, with `isCached: true`, even if it has already completed, and waiting on a completed waiter returns its event straight away. Inside a task a string key is scoped to the run, as it is for [`trigger()`](/idempotency), so a retried attempt gets the waiter (and the event) the attempt before it created:
148
+
149
+ ```ts
150
+ const waiter = await webhooks.waiter.create(stripe, {
151
+ match: { "event.data.object.metadata.orderId": orderId },
152
+ idempotencyKey: `payment-${orderId}`,
153
+ });
154
+ ```
155
+
156
+ Use [`idempotencyKeys.create(key, { scope })`](/idempotency) for a key scoped to one attempt or shared across runs, and `idempotencyKeyTTL` to set how long the key lasts.
157
+
158
+ Without a key every call creates a new waiter, and a waiter only matches deliveries that arrive after it. If an attempt fails after its webhook arrived, the retry's new waiter waits for an event the provider already sent.
159
+
160
+ ## Cancelling
161
+
162
+ `webhooks.waiter.cancel(waiter)` frees the waiter's slot and fails its wait with `WebhookWaiterCancelledError`. If a delivery has already claimed the waiter, the cancel is too late and the run resumes with that delivery:
163
+
164
+ ```ts
165
+ const result = await webhooks.waiter.cancel(waiter);
166
+ if (!result.cancelled) {
167
+ console.log("Already resumed by", result.deliveryId); // result.reason is "too_late"
168
+ }
169
+ ```
170
+
171
+ ## Errors
172
+
173
+ `webhooks.waiter.create` throws a typed error when nothing was created:
174
+
175
+ | Error | Cause |
176
+ | --- | --- |
177
+ | `WebhookWaiterLimitError` | A limit was reached. `reason` is `endpoint_limit`, `environment_limit`, `shape_limit` or `timeout_too_long`. |
178
+ | `WebhookEndpointNotFoundError` | The endpoint isn't in the environment's current deployment. |
179
+ | `WebhookFilterError` | The `filter` doesn't parse. |
180
+
181
+ ## Limits
182
+
183
+ | Limit | Default |
184
+ | --- | --- |
185
+ | Live waiters per endpoint | 10,000. This is also the most one delivery can resume. |
186
+ | Live waiters per environment | 1,000,000 on self-hosted installs. |
187
+ | Distinct sets of `match` paths per endpoint | 25 |
188
+ | Paths per `match` | 5 |
189
+ | Tags per waiter | 10 |
190
+ | Timeout | 24 hours by default, 90 days at most |
191
+
192
+ On Trigger.dev Cloud the per-endpoint and per-environment limits depend on your plan. Self-hosted installs can change them with `WEBHOOK_WAITER_MAX_PER_ENDPOINT`, `WEBHOOK_WAITER_MAX_PER_ENVIRONMENT` and `WEBHOOK_WAITER_MAX_SHAPES`.
193
+
194
+ A delivery that resumes waiters shows one **Waiting runs** row on its [delivery page](/webhooks/deliveries#where-a-delivery-went) with how many matched, resumed and failed. A delivery that arrives while runs are waiting but matches none of them, and no subscriber takes, is `UNMATCHED`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/sdk",
3
- "version": "4.7.4",
3
+ "version": "4.7.6",
4
4
  "description": "trigger.dev Node.JS SDK",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -69,12 +69,13 @@
69
69
  "dependencies": {
70
70
  "@opentelemetry/api": "1.9.1",
71
71
  "@opentelemetry/semantic-conventions": "1.41.1",
72
- "@trigger.dev/core": "4.7.4",
72
+ "@trigger.dev/core": "4.7.6",
73
73
  "uncrypto": "^0.1.3"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@ai-sdk/provider": "3.0.8",
77
77
  "@arethetypeswrong/cli": "^0.18.5",
78
+ "@opentelemetry/sdk-trace-base": "2.8.0",
78
79
  "@types/react": "^19.2.14",
79
80
  "ai": "^6.0.116",
80
81
  "ai-v7": "npm:ai@7.0.0-canary.159",