-
+
+
+
+
+
+
+
+
+
+
+
+ }
+ content="V3 deprecation warning"
+ side="right"
+ sideOffset={8}
+ disableHoverableContent
+ asChild
+ />
+
+
+
+
+
+
+ );
+}
+
+function V3DeprecationContent() {
+ return (
+
+
+
+
+ V3 deprecation warning
+
+
+
+ This is a v3 project. V3 deploys will stop working on 1 April 2026. Full shutdown is 1 July
+ 2026 where all v3 runs will stop executing. Migrate to v4 to avoid downtime.
+
+
+ View migration guide
+
+
+ );
+}
+
function ProjectSelector({
project,
organization,
diff --git a/apps/webapp/app/routes/resources.incidents.tsx b/apps/webapp/app/routes/resources.incidents.tsx
index 445c3ef91..d9e107e54 100644
--- a/apps/webapp/app/routes/resources.incidents.tsx
+++ b/apps/webapp/app/routes/resources.incidents.tsx
@@ -70,9 +70,17 @@ export function useIncidentStatus() {
};
}
-export function IncidentStatusPanel({ isCollapsed = false }: { isCollapsed?: boolean }) {
- const { title, hasIncident, isManagedCloud } = useIncidentStatus();
-
+export function IncidentStatusPanel({
+ isCollapsed = false,
+ title,
+ hasIncident,
+ isManagedCloud,
+}: {
+ isCollapsed?: boolean;
+ title: string | null;
+ hasIncident: boolean;
+ isManagedCloud: boolean;
+}) {
if (!isManagedCloud || !hasIncident) {
return null;
}
From 84a00b6eb6e8eea7b4b2095430ef5725de26847c Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 19 Feb 2026 13:38:10 +0000
Subject: [PATCH 04/17] chore: release v4.4.0 (#2941)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and publish to npm
yourself or [setup this action to publish
automatically](https://github.com/changesets/action#with-publishing). If
you're not ready to do a release yet, that's fine, whenever you add more
changesets to main, this PR will be updated.
# Releases
## @trigger.dev/sdk@4.4.0
### Minor Changes
- Added `query.execute()` which lets you query your Trigger.dev data
using TRQL (Trigger Query Language) and returns results as typed JSON
rows or CSV. It supports configurable scope (environment, project, or
organization), time filtering via `period` or `from`/`to` ranges, and a
`format` option for JSON or CSV output.
([#3060](https://github.com/triggerdotdev/trigger.dev/pull/3060))
```typescript
import { query } from "@trigger.dev/sdk";
import type { QueryTable } from "@trigger.dev/sdk";
// Basic untyped query
const result = await query.execute("SELECT run_id, status FROM runs
LIMIT 10");
// Type-safe query using QueryTable to pick specific columns
const typedResult = await query.execute>(
"SELECT run_id, status, triggered_at FROM runs LIMIT 10"
);
typedResult.results.forEach((row) => {
console.log(row.run_id, row.status); // Fully typed
});
// Aggregation query with inline types
const stats = await query.execute<{ status: string; count: number }>(
"SELECT status, COUNT(*) as count FROM runs GROUP BY status",
{ scope: "project", period: "30d" }
);
// CSV export
const csv = await query.execute("SELECT run_id, status FROM runs", {
format: "csv",
period: "7d",
});
console.log(csv.results); // Raw CSV string
```
### Patch Changes
- Add `maxDelay` option to debounce feature. This allows setting a
maximum time limit for how long a debounced run can be delayed, ensuring
execution happens within a specified window even with continuous
triggers.
([#2984](https://github.com/triggerdotdev/trigger.dev/pull/2984))
```typescript
await myTask.trigger(payload, {
debounce: {
key: "my-key",
delay: "5s",
maxDelay: "30m", // Execute within 30 minutes regardless of continuous
triggers
},
});
```
- Aligned the SDK's `getRunIdForOptions` logic with the Core package to
handle semantic targets (`root`, `parent`) in root tasks.
([#2874](https://github.com/triggerdotdev/trigger.dev/pull/2874))
- Export `AnyOnStartAttemptHookFunction` type to allow defining
`onStartAttempt` hooks for individual tasks.
([#2966](https://github.com/triggerdotdev/trigger.dev/pull/2966))
- Fixed a minor issue in the deployment command on distinguishing
between local builds for the cloud vs local builds for self-hosting
setups.
([#3070](https://github.com/triggerdotdev/trigger.dev/pull/3070))
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
## @trigger.dev/build@4.4.0
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
## trigger.dev@4.4.0
### Patch Changes
- Fix runner getting stuck indefinitely when `execute()` is called on a
dead child process.
([#2978](https://github.com/triggerdotdev/trigger.dev/pull/2978))
- Add optional `timeoutInSeconds` parameter to the
`wait_for_run_to_complete` MCP tool. Defaults to 60 seconds. If the run
doesn't complete within the timeout, the current state of the run is
returned instead of waiting indefinitely.
([#3035](https://github.com/triggerdotdev/trigger.dev/pull/3035))
- Fixed a minor issue in the deployment command on distinguishing
between local builds for the cloud vs local builds for self-hosting
setups.
([#3070](https://github.com/triggerdotdev/trigger.dev/pull/3070))
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
- `@trigger.dev/build@4.4.0`
- `@trigger.dev/schema-to-json@4.4.0`
## @trigger.dev/core@4.4.0
### Patch Changes
- Add `maxDelay` option to debounce feature. This allows setting a
maximum time limit for how long a debounced run can be delayed, ensuring
execution happens within a specified window even with continuous
triggers.
([#2984](https://github.com/triggerdotdev/trigger.dev/pull/2984))
```typescript
await myTask.trigger(payload, {
debounce: {
key: "my-key",
delay: "5s",
maxDelay: "30m", // Execute within 30 minutes regardless of continuous
triggers
},
});
```
- Fixed a minor issue in the deployment command on distinguishing
between local builds for the cloud vs local builds for self-hosting
setups.
([#3070](https://github.com/triggerdotdev/trigger.dev/pull/3070))
- fix: vendor superjson to fix ESM/CJS compatibility
([#2949](https://github.com/triggerdotdev/trigger.dev/pull/2949))
Bundle superjson during build to avoid `ERR_REQUIRE_ESM` errors on
Node.js versions that don't support `require(ESM)` by default (<
22.12.0) and AWS Lambda which intentionally disables it.
- Add Vercel integration support to API schemas: `commitSHA` and
`integrationDeployments` on deployment responses, and `source` field for
environment variable imports.
([#2994](https://github.com/triggerdotdev/trigger.dev/pull/2994))
## @trigger.dev/python@4.4.0
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
- `@trigger.dev/sdk@4.4.0`
- `@trigger.dev/build@4.4.0`
## @trigger.dev/react-hooks@4.4.0
### Patch Changes
- Fix `onComplete` callback firing prematurely when the realtime stream
disconnects before the run finishes.
([#2929](https://github.com/triggerdotdev/trigger.dev/pull/2929))
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
## @trigger.dev/redis-worker@4.4.0
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
## @trigger.dev/rsc@4.4.0
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
## @trigger.dev/schema-to-json@4.4.0
### Patch Changes
- Updated dependencies:
- `@trigger.dev/core@4.4.0`
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot]
---
.changeset/add-debounce-maxdelay.md | 16 ------
.changeset/afraid-gorillas-jump.md | 34 ------------
.changeset/calm-hooks-wait.md | 5 --
.changeset/consistent-stream-targets.md | 5 --
.changeset/export-start-attempt-hook-type.md | 5 --
.changeset/fix-dead-process-execute-hang.md | 5 --
.changeset/mcp-wait-timeout.md | 5 --
.changeset/tricky-suits-design.md | 7 ---
.changeset/vendor-superjson-esm-fix.md | 7 ---
.changeset/vercel-integration.md | 5 --
packages/build/CHANGELOG.md | 7 +++
packages/build/package.json | 4 +-
packages/cli-v3/CHANGELOG.md | 12 +++++
packages/cli-v3/package.json | 8 +--
packages/core/CHANGELOG.md | 23 ++++++++
packages/core/package.json | 2 +-
packages/python/CHANGELOG.md | 9 ++++
packages/python/package.json | 12 ++---
packages/react-hooks/CHANGELOG.md | 8 +++
packages/react-hooks/package.json | 4 +-
packages/redis-worker/CHANGELOG.md | 7 +++
packages/redis-worker/package.json | 4 +-
packages/rsc/CHANGELOG.md | 7 +++
packages/rsc/package.json | 6 +--
packages/schema-to-json/CHANGELOG.md | 7 +++
packages/schema-to-json/package.json | 2 +-
packages/trigger-sdk/CHANGELOG.md | 55 ++++++++++++++++++++
packages/trigger-sdk/package.json | 4 +-
pnpm-lock.yaml | 36 ++++++-------
29 files changed, 176 insertions(+), 135 deletions(-)
delete mode 100644 .changeset/add-debounce-maxdelay.md
delete mode 100644 .changeset/afraid-gorillas-jump.md
delete mode 100644 .changeset/calm-hooks-wait.md
delete mode 100644 .changeset/consistent-stream-targets.md
delete mode 100644 .changeset/export-start-attempt-hook-type.md
delete mode 100644 .changeset/fix-dead-process-execute-hang.md
delete mode 100644 .changeset/mcp-wait-timeout.md
delete mode 100644 .changeset/tricky-suits-design.md
delete mode 100644 .changeset/vendor-superjson-esm-fix.md
delete mode 100644 .changeset/vercel-integration.md
diff --git a/.changeset/add-debounce-maxdelay.md b/.changeset/add-debounce-maxdelay.md
deleted file mode 100644
index a70b95d47..000000000
--- a/.changeset/add-debounce-maxdelay.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-"@trigger.dev/core": patch
-"@trigger.dev/sdk": patch
----
-
-Add `maxDelay` option to debounce feature. This allows setting a maximum time limit for how long a debounced run can be delayed, ensuring execution happens within a specified window even with continuous triggers.
-
-```typescript
-await myTask.trigger(payload, {
- debounce: {
- key: "my-key",
- delay: "5s",
- maxDelay: "30m", // Execute within 30 minutes regardless of continuous triggers
- },
-});
-```
diff --git a/.changeset/afraid-gorillas-jump.md b/.changeset/afraid-gorillas-jump.md
deleted file mode 100644
index 1734f0534..000000000
--- a/.changeset/afraid-gorillas-jump.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-"@trigger.dev/sdk": minor
----
-
-Added `query.execute()` which lets you query your Trigger.dev data using TRQL (Trigger Query Language) and returns results as typed JSON rows or CSV. It supports configurable scope (environment, project, or organization), time filtering via `period` or `from`/`to` ranges, and a `format` option for JSON or CSV output.
-
-```typescript
-import { query } from "@trigger.dev/sdk";
-import type { QueryTable } from "@trigger.dev/sdk";
-
-// Basic untyped query
-const result = await query.execute("SELECT run_id, status FROM runs LIMIT 10");
-
-// Type-safe query using QueryTable to pick specific columns
-const typedResult = await query.execute>(
- "SELECT run_id, status, triggered_at FROM runs LIMIT 10"
-);
-typedResult.results.forEach(row => {
- console.log(row.run_id, row.status); // Fully typed
-});
-
-// Aggregation query with inline types
-const stats = await query.execute<{ status: string; count: number }>(
- "SELECT status, COUNT(*) as count FROM runs GROUP BY status",
- { scope: "project", period: "30d" }
-);
-
-// CSV export
-const csv = await query.execute(
- "SELECT run_id, status FROM runs",
- { format: "csv", period: "7d" }
-);
-console.log(csv.results); // Raw CSV string
-```
diff --git a/.changeset/calm-hooks-wait.md b/.changeset/calm-hooks-wait.md
deleted file mode 100644
index 02a83fac3..000000000
--- a/.changeset/calm-hooks-wait.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@trigger.dev/react-hooks": patch
----
-
-Fix `onComplete` callback firing prematurely when the realtime stream disconnects before the run finishes.
diff --git a/.changeset/consistent-stream-targets.md b/.changeset/consistent-stream-targets.md
deleted file mode 100644
index 5fbb57803..000000000
--- a/.changeset/consistent-stream-targets.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@trigger.dev/sdk": patch
----
-
-Aligned the SDK's `getRunIdForOptions` logic with the Core package to handle semantic targets (`root`, `parent`) in root tasks.
diff --git a/.changeset/export-start-attempt-hook-type.md b/.changeset/export-start-attempt-hook-type.md
deleted file mode 100644
index bad7c5258..000000000
--- a/.changeset/export-start-attempt-hook-type.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@trigger.dev/sdk": patch
----
-
-Export `AnyOnStartAttemptHookFunction` type to allow defining `onStartAttempt` hooks for individual tasks.
diff --git a/.changeset/fix-dead-process-execute-hang.md b/.changeset/fix-dead-process-execute-hang.md
deleted file mode 100644
index fa96e9c88..000000000
--- a/.changeset/fix-dead-process-execute-hang.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"trigger.dev": patch
----
-
-Fix runner getting stuck indefinitely when `execute()` is called on a dead child process.
diff --git a/.changeset/mcp-wait-timeout.md b/.changeset/mcp-wait-timeout.md
deleted file mode 100644
index 02d6c9823..000000000
--- a/.changeset/mcp-wait-timeout.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"trigger.dev": patch
----
-
-Add optional `timeoutInSeconds` parameter to the `wait_for_run_to_complete` MCP tool. Defaults to 60 seconds. If the run doesn't complete within the timeout, the current state of the run is returned instead of waiting indefinitely.
diff --git a/.changeset/tricky-suits-design.md b/.changeset/tricky-suits-design.md
deleted file mode 100644
index d00603c07..000000000
--- a/.changeset/tricky-suits-design.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-"@trigger.dev/sdk": patch
-"trigger.dev": patch
-"@trigger.dev/core": patch
----
-
-Fixed a minor issue in the deployment command on distinguishing between local builds for the cloud vs local builds for self-hosting setups.
diff --git a/.changeset/vendor-superjson-esm-fix.md b/.changeset/vendor-superjson-esm-fix.md
deleted file mode 100644
index ef04201d2..000000000
--- a/.changeset/vendor-superjson-esm-fix.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-"@trigger.dev/core": patch
----
-
-fix: vendor superjson to fix ESM/CJS compatibility
-
-Bundle superjson during build to avoid `ERR_REQUIRE_ESM` errors on Node.js versions that don't support `require(ESM)` by default (< 22.12.0) and AWS Lambda which intentionally disables it.
diff --git a/.changeset/vercel-integration.md b/.changeset/vercel-integration.md
deleted file mode 100644
index 8b638e364..000000000
--- a/.changeset/vercel-integration.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@trigger.dev/core": patch
----
-
-Add Vercel integration support to API schemas: `commitSHA` and `integrationDeployments` on deployment responses, and `source` field for environment variable imports.
diff --git a/packages/build/CHANGELOG.md b/packages/build/CHANGELOG.md
index 298612e37..7dbf0c8bc 100644
--- a/packages/build/CHANGELOG.md
+++ b/packages/build/CHANGELOG.md
@@ -1,5 +1,12 @@
# @trigger.dev/build
+## 4.4.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/build/package.json b/packages/build/package.json
index bd2c09034..99187100b 100644
--- a/packages/build/package.json
+++ b/packages/build/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/build",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "trigger.dev build extensions",
"license": "MIT",
"publishConfig": {
@@ -78,7 +78,7 @@
},
"dependencies": {
"@prisma/config": "^6.10.0",
- "@trigger.dev/core": "workspace:4.3.3",
+ "@trigger.dev/core": "workspace:4.4.0",
"mlly": "^1.7.1",
"pkg-types": "^1.1.3",
"resolve": "^1.22.8",
diff --git a/packages/cli-v3/CHANGELOG.md b/packages/cli-v3/CHANGELOG.md
index 7dec2405f..089625234 100644
--- a/packages/cli-v3/CHANGELOG.md
+++ b/packages/cli-v3/CHANGELOG.md
@@ -1,5 +1,17 @@
# trigger.dev
+## 4.4.0
+
+### Patch Changes
+
+- Fix runner getting stuck indefinitely when `execute()` is called on a dead child process. ([#2978](https://github.com/triggerdotdev/trigger.dev/pull/2978))
+- Add optional `timeoutInSeconds` parameter to the `wait_for_run_to_complete` MCP tool. Defaults to 60 seconds. If the run doesn't complete within the timeout, the current state of the run is returned instead of waiting indefinitely. ([#3035](https://github.com/triggerdotdev/trigger.dev/pull/3035))
+- Fixed a minor issue in the deployment command on distinguishing between local builds for the cloud vs local builds for self-hosting setups. ([#3070](https://github.com/triggerdotdev/trigger.dev/pull/3070))
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+ - `@trigger.dev/build@4.4.0`
+ - `@trigger.dev/schema-to-json@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json
index 838593006..679bc44b5 100644
--- a/packages/cli-v3/package.json
+++ b/packages/cli-v3/package.json
@@ -1,6 +1,6 @@
{
"name": "trigger.dev",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "A Command-Line Interface for Trigger.dev projects",
"type": "module",
"license": "MIT",
@@ -93,9 +93,9 @@
"@opentelemetry/sdk-trace-node": "2.0.1",
"@opentelemetry/semantic-conventions": "1.36.0",
"@s2-dev/streamstore": "^0.17.6",
- "@trigger.dev/build": "workspace:4.3.3",
- "@trigger.dev/core": "workspace:4.3.3",
- "@trigger.dev/schema-to-json": "workspace:4.3.3",
+ "@trigger.dev/build": "workspace:4.4.0",
+ "@trigger.dev/core": "workspace:4.4.0",
+ "@trigger.dev/schema-to-json": "workspace:4.4.0",
"ansi-escapes": "^7.0.0",
"braces": "^3.0.3",
"c12": "^1.11.1",
diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md
index 83651ee19..e522e2979 100644
--- a/packages/core/CHANGELOG.md
+++ b/packages/core/CHANGELOG.md
@@ -1,5 +1,28 @@
# internal-platform
+## 4.4.0
+
+### Patch Changes
+
+- Add `maxDelay` option to debounce feature. This allows setting a maximum time limit for how long a debounced run can be delayed, ensuring execution happens within a specified window even with continuous triggers. ([#2984](https://github.com/triggerdotdev/trigger.dev/pull/2984))
+
+ ```typescript
+ await myTask.trigger(payload, {
+ debounce: {
+ key: "my-key",
+ delay: "5s",
+ maxDelay: "30m", // Execute within 30 minutes regardless of continuous triggers
+ },
+ });
+ ```
+
+- Fixed a minor issue in the deployment command on distinguishing between local builds for the cloud vs local builds for self-hosting setups. ([#3070](https://github.com/triggerdotdev/trigger.dev/pull/3070))
+- fix: vendor superjson to fix ESM/CJS compatibility ([#2949](https://github.com/triggerdotdev/trigger.dev/pull/2949))
+
+ Bundle superjson during build to avoid `ERR_REQUIRE_ESM` errors on Node.js versions that don't support `require(ESM)` by default (< 22.12.0) and AWS Lambda which intentionally disables it.
+
+- Add Vercel integration support to API schemas: `commitSHA` and `integrationDeployments` on deployment responses, and `source` field for environment variable imports. ([#2994](https://github.com/triggerdotdev/trigger.dev/pull/2994))
+
## 4.3.3
### Patch Changes
diff --git a/packages/core/package.json b/packages/core/package.json
index d73b425f7..47871b6d9 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "Core code used across the Trigger.dev SDK and platform",
"license": "MIT",
"publishConfig": {
diff --git a/packages/python/CHANGELOG.md b/packages/python/CHANGELOG.md
index 9e4f9a1ac..30de2cd25 100644
--- a/packages/python/CHANGELOG.md
+++ b/packages/python/CHANGELOG.md
@@ -1,5 +1,14 @@
# @trigger.dev/python
+## 4.4.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+ - `@trigger.dev/sdk@4.4.0`
+ - `@trigger.dev/build@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/python/package.json b/packages/python/package.json
index f732db7c9..f410c21b4 100644
--- a/packages/python/package.json
+++ b/packages/python/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/python",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "Python runtime and build extension for Trigger.dev",
"license": "MIT",
"publishConfig": {
@@ -45,7 +45,7 @@
"check-exports": "attw --pack ."
},
"dependencies": {
- "@trigger.dev/core": "workspace:4.3.3",
+ "@trigger.dev/core": "workspace:4.4.0",
"tinyexec": "^0.3.2"
},
"devDependencies": {
@@ -56,12 +56,12 @@
"tsx": "4.17.0",
"esbuild": "^0.23.0",
"@arethetypeswrong/cli": "^0.15.4",
- "@trigger.dev/build": "workspace:4.3.3",
- "@trigger.dev/sdk": "workspace:4.3.3"
+ "@trigger.dev/build": "workspace:4.4.0",
+ "@trigger.dev/sdk": "workspace:4.4.0"
},
"peerDependencies": {
- "@trigger.dev/sdk": "workspace:^4.3.3",
- "@trigger.dev/build": "workspace:^4.3.3"
+ "@trigger.dev/sdk": "workspace:^4.4.0",
+ "@trigger.dev/build": "workspace:^4.4.0"
},
"engines": {
"node": ">=18.20.0"
diff --git a/packages/react-hooks/CHANGELOG.md b/packages/react-hooks/CHANGELOG.md
index e39dc69d9..e45d3f15d 100644
--- a/packages/react-hooks/CHANGELOG.md
+++ b/packages/react-hooks/CHANGELOG.md
@@ -1,5 +1,13 @@
# @trigger.dev/react-hooks
+## 4.4.0
+
+### Patch Changes
+
+- Fix `onComplete` callback firing prematurely when the realtime stream disconnects before the run finishes. ([#2929](https://github.com/triggerdotdev/trigger.dev/pull/2929))
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/react-hooks/package.json b/packages/react-hooks/package.json
index ea73d20ea..974b1d5e0 100644
--- a/packages/react-hooks/package.json
+++ b/packages/react-hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/react-hooks",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "trigger.dev react hooks",
"license": "MIT",
"publishConfig": {
@@ -37,7 +37,7 @@
"check-exports": "attw --pack ."
},
"dependencies": {
- "@trigger.dev/core": "workspace:^4.3.3",
+ "@trigger.dev/core": "workspace:^4.4.0",
"swr": "^2.2.5"
},
"devDependencies": {
diff --git a/packages/redis-worker/CHANGELOG.md b/packages/redis-worker/CHANGELOG.md
index 98bbd3864..6686a83f1 100644
--- a/packages/redis-worker/CHANGELOG.md
+++ b/packages/redis-worker/CHANGELOG.md
@@ -1,5 +1,12 @@
# @trigger.dev/redis-worker
+## 4.4.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/redis-worker/package.json b/packages/redis-worker/package.json
index 97f831080..24925a637 100644
--- a/packages/redis-worker/package.json
+++ b/packages/redis-worker/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/redis-worker",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "Redis worker for trigger.dev",
"license": "MIT",
"publishConfig": {
@@ -23,7 +23,7 @@
"test": "vitest --sequence.concurrent=false --no-file-parallelism"
},
"dependencies": {
- "@trigger.dev/core": "workspace:4.3.3",
+ "@trigger.dev/core": "workspace:4.4.0",
"lodash.omit": "^4.5.0",
"nanoid": "^5.0.7",
"p-limit": "^6.2.0",
diff --git a/packages/rsc/CHANGELOG.md b/packages/rsc/CHANGELOG.md
index 1332daf42..d9d2e2bef 100644
--- a/packages/rsc/CHANGELOG.md
+++ b/packages/rsc/CHANGELOG.md
@@ -1,5 +1,12 @@
# @trigger.dev/rsc
+## 4.4.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/rsc/package.json b/packages/rsc/package.json
index 4107c03c9..155adff74 100644
--- a/packages/rsc/package.json
+++ b/packages/rsc/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/rsc",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "trigger.dev rsc",
"license": "MIT",
"publishConfig": {
@@ -37,14 +37,14 @@
"check-exports": "attw --pack ."
},
"dependencies": {
- "@trigger.dev/core": "workspace:^4.3.3",
+ "@trigger.dev/core": "workspace:^4.4.0",
"mlly": "^1.7.1",
"react": "19.0.0-rc.1",
"react-dom": "19.0.0-rc.1"
},
"devDependencies": {
"@arethetypeswrong/cli": "^0.15.4",
- "@trigger.dev/build": "workspace:^4.3.3",
+ "@trigger.dev/build": "workspace:^4.4.0",
"@types/node": "^20.14.14",
"@types/react": "*",
"@types/react-dom": "*",
diff --git a/packages/schema-to-json/CHANGELOG.md b/packages/schema-to-json/CHANGELOG.md
index 2a6a01bd8..fd984c1bf 100644
--- a/packages/schema-to-json/CHANGELOG.md
+++ b/packages/schema-to-json/CHANGELOG.md
@@ -1,5 +1,12 @@
# @trigger.dev/schema-to-json
+## 4.4.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/schema-to-json/package.json b/packages/schema-to-json/package.json
index 23ae1c5f6..9fc6a804f 100644
--- a/packages/schema-to-json/package.json
+++ b/packages/schema-to-json/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/schema-to-json",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "Convert various schema validation libraries to JSON Schema",
"license": "MIT",
"publishConfig": {
diff --git a/packages/trigger-sdk/CHANGELOG.md b/packages/trigger-sdk/CHANGELOG.md
index c68cda8d6..475338e85 100644
--- a/packages/trigger-sdk/CHANGELOG.md
+++ b/packages/trigger-sdk/CHANGELOG.md
@@ -1,5 +1,60 @@
# @trigger.dev/sdk
+## 4.4.0
+
+### Minor Changes
+
+- Added `query.execute()` which lets you query your Trigger.dev data using TRQL (Trigger Query Language) and returns results as typed JSON rows or CSV. It supports configurable scope (environment, project, or organization), time filtering via `period` or `from`/`to` ranges, and a `format` option for JSON or CSV output. ([#3060](https://github.com/triggerdotdev/trigger.dev/pull/3060))
+
+ ```typescript
+ import { query } from "@trigger.dev/sdk";
+ import type { QueryTable } from "@trigger.dev/sdk";
+
+ // Basic untyped query
+ const result = await query.execute("SELECT run_id, status FROM runs LIMIT 10");
+
+ // Type-safe query using QueryTable to pick specific columns
+ const typedResult = await query.execute>(
+ "SELECT run_id, status, triggered_at FROM runs LIMIT 10"
+ );
+ typedResult.results.forEach((row) => {
+ console.log(row.run_id, row.status); // Fully typed
+ });
+
+ // Aggregation query with inline types
+ const stats = await query.execute<{ status: string; count: number }>(
+ "SELECT status, COUNT(*) as count FROM runs GROUP BY status",
+ { scope: "project", period: "30d" }
+ );
+
+ // CSV export
+ const csv = await query.execute("SELECT run_id, status FROM runs", {
+ format: "csv",
+ period: "7d",
+ });
+ console.log(csv.results); // Raw CSV string
+ ```
+
+### Patch Changes
+
+- Add `maxDelay` option to debounce feature. This allows setting a maximum time limit for how long a debounced run can be delayed, ensuring execution happens within a specified window even with continuous triggers. ([#2984](https://github.com/triggerdotdev/trigger.dev/pull/2984))
+
+ ```typescript
+ await myTask.trigger(payload, {
+ debounce: {
+ key: "my-key",
+ delay: "5s",
+ maxDelay: "30m", // Execute within 30 minutes regardless of continuous triggers
+ },
+ });
+ ```
+
+- Aligned the SDK's `getRunIdForOptions` logic with the Core package to handle semantic targets (`root`, `parent`) in root tasks. ([#2874](https://github.com/triggerdotdev/trigger.dev/pull/2874))
+- Export `AnyOnStartAttemptHookFunction` type to allow defining `onStartAttempt` hooks for individual tasks. ([#2966](https://github.com/triggerdotdev/trigger.dev/pull/2966))
+- Fixed a minor issue in the deployment command on distinguishing between local builds for the cloud vs local builds for self-hosting setups. ([#3070](https://github.com/triggerdotdev/trigger.dev/pull/3070))
+- Updated dependencies:
+ - `@trigger.dev/core@4.4.0`
+
## 4.3.3
### Patch Changes
diff --git a/packages/trigger-sdk/package.json b/packages/trigger-sdk/package.json
index 9ee58f659..c01158861 100644
--- a/packages/trigger-sdk/package.json
+++ b/packages/trigger-sdk/package.json
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sdk",
- "version": "4.3.3",
+ "version": "4.4.0",
"description": "trigger.dev Node.JS SDK",
"license": "MIT",
"publishConfig": {
@@ -52,7 +52,7 @@
"dependencies": {
"@opentelemetry/api": "1.9.0",
"@opentelemetry/semantic-conventions": "1.36.0",
- "@trigger.dev/core": "workspace:4.3.3",
+ "@trigger.dev/core": "workspace:4.4.0",
"chalk": "^5.2.0",
"cronstrue": "^2.21.0",
"debug": "^4.3.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f504496dd..b8e18aeb2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1101,7 +1101,7 @@ importers:
version: 18.3.1
react-email:
specifier: ^2.1.1
- version: 2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(eslint@8.31.0)
+ version: 2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(bufferutil@4.0.9)(eslint@8.31.0)
resend:
specifier: ^3.2.0
version: 3.2.0
@@ -1379,7 +1379,7 @@ importers:
specifier: ^6.10.0
version: 6.19.0(magicast@0.3.5)
'@trigger.dev/core':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../core
mlly:
specifier: ^1.7.1
@@ -1455,13 +1455,13 @@ importers:
specifier: ^0.17.6
version: 0.17.6
'@trigger.dev/build':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../build
'@trigger.dev/core':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../core
'@trigger.dev/schema-to-json':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../schema-to-json
ansi-escapes:
specifier: ^7.0.0
@@ -1820,7 +1820,7 @@ importers:
packages/python:
dependencies:
'@trigger.dev/core':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../core
tinyexec:
specifier: ^0.3.2
@@ -1830,10 +1830,10 @@ importers:
specifier: ^0.15.4
version: 0.15.4
'@trigger.dev/build':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../build
'@trigger.dev/sdk':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../trigger-sdk
'@types/node':
specifier: 20.14.14
@@ -1857,7 +1857,7 @@ importers:
packages/react-hooks:
dependencies:
'@trigger.dev/core':
- specifier: workspace:^4.3.3
+ specifier: workspace:^4.4.0
version: link:../core
react:
specifier: ^18.0 || ^19.0 || ^19.0.0-rc
@@ -1891,7 +1891,7 @@ importers:
packages/redis-worker:
dependencies:
'@trigger.dev/core':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../core
cron-parser:
specifier: ^4.9.0
@@ -1940,7 +1940,7 @@ importers:
packages/rsc:
dependencies:
'@trigger.dev/core':
- specifier: workspace:^4.3.3
+ specifier: workspace:^4.4.0
version: link:../core
mlly:
specifier: ^1.7.1
@@ -1956,7 +1956,7 @@ importers:
specifier: ^0.15.4
version: 0.15.4
'@trigger.dev/build':
- specifier: workspace:^4.3.3
+ specifier: workspace:^4.4.0
version: link:../build
'@types/node':
specifier: 20.14.14
@@ -2032,7 +2032,7 @@ importers:
specifier: 1.36.0
version: 1.36.0
'@trigger.dev/core':
- specifier: workspace:4.3.3
+ specifier: workspace:4.4.0
version: link:../core
chalk:
specifier: ^5.2.0
@@ -39164,7 +39164,7 @@ snapshots:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- react-email@2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(eslint@8.31.0):
+ react-email@2.1.2(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.15)(bufferutil@4.0.9)(eslint@8.31.0):
dependencies:
'@babel/parser': 7.24.1
'@radix-ui/colors': 1.0.1
@@ -39201,8 +39201,8 @@ snapshots:
react: 18.3.1
react-dom: 18.2.0(react@18.3.1)
shelljs: 0.8.5
- socket.io: 4.7.3
- socket.io-client: 4.7.3
+ socket.io: 4.7.3(bufferutil@4.0.9)
+ socket.io-client: 4.7.3(bufferutil@4.0.9)
sonner: 1.3.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1)
source-map-js: 1.0.2
stacktrace-parser: 0.1.10
@@ -40402,7 +40402,7 @@ snapshots:
- supports-color
- utf-8-validate
- socket.io-client@4.7.3:
+ socket.io-client@4.7.3(bufferutil@4.0.9):
dependencies:
'@socket.io/component-emitter': 3.1.0
debug: 4.3.7(supports-color@10.0.0)
@@ -40431,7 +40431,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- socket.io@4.7.3:
+ socket.io@4.7.3(bufferutil@4.0.9):
dependencies:
accepts: 1.3.8
base64id: 2.0.0
From 22505e980302e5a007bb7c1dc799dc6ce97c4dfb Mon Sep 17 00:00:00 2001
From: Matt Aitken
Date: Thu, 19 Feb 2026 13:50:13 +0000
Subject: [PATCH 05/17] Query and Metrics docs (#3074)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---
docs/docs.json | 15 +-
docs/images/metrics-built-in.png | Bin 0 -> 727903 bytes
docs/images/query-chart-usage-percentiles.png | Bin 0 -> 545315 bytes
docs/insights/metrics.mdx | 96 +++
docs/insights/query.mdx | 545 ++++++++++++++++++
docs/limits.mdx | 38 +-
docs/management/query/execute.mdx | 11 +
docs/v3-openapi.yaml | 198 ++++++-
8 files changed, 893 insertions(+), 10 deletions(-)
create mode 100644 docs/images/metrics-built-in.png
create mode 100644 docs/images/query-chart-usage-percentiles.png
create mode 100644 docs/insights/metrics.mdx
create mode 100644 docs/insights/query.mdx
create mode 100644 docs/management/query/execute.mdx
diff --git a/docs/docs.json b/docs/docs.json
index 234497758..7c52e79b9 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -179,6 +179,10 @@
}
]
},
+ {
+ "group": "Insights",
+ "pages": ["insights/query", "insights/metrics"]
+ },
{
"group": "Using the Dashboard",
"pages": ["run-tests", "troubleshooting-alerts", "replaying", "bulk-actions"]
@@ -239,10 +243,7 @@
},
{
"group": "Batches API",
- "pages": [
- "management/batches/create",
- "management/batches/stream-items"
- ]
+ "pages": ["management/batches/create", "management/batches/stream-items"]
},
{
"group": "Runs API",
@@ -296,6 +297,10 @@
"management/deployments/get-latest",
"management/deployments/promote"
]
+ },
+ {
+ "group": "Query API",
+ "pages": ["management/query/execute"]
}
]
},
@@ -695,4 +700,4 @@
"destination": "/migrating-from-v3"
}
]
-}
\ No newline at end of file
+}
diff --git a/docs/images/metrics-built-in.png b/docs/images/metrics-built-in.png
new file mode 100644
index 0000000000000000000000000000000000000000..7104a16c4a331d58bdeb902a6e835a148c5ef474
GIT binary patch
literal 727903
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