@trigger.dev/sdk 4.5.0-rc.6 → 4.5.0-rc.7

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 (191) hide show
  1. package/dist/commonjs/v3/ai.d.ts +171 -5
  2. package/dist/commonjs/v3/ai.js +309 -22
  3. package/dist/commonjs/v3/ai.js.map +1 -1
  4. package/dist/commonjs/v3/chat-server.d.ts +8 -0
  5. package/dist/commonjs/v3/chat-server.js +32 -10
  6. package/dist/commonjs/v3/chat-server.js.map +1 -1
  7. package/dist/commonjs/v3/chat-server.test.js +51 -0
  8. package/dist/commonjs/v3/chat-server.test.js.map +1 -1
  9. package/dist/commonjs/v3/createStartSessionAction.test.js +30 -0
  10. package/dist/commonjs/v3/createStartSessionAction.test.js.map +1 -1
  11. package/dist/commonjs/v3/sessions.d.ts +3 -2
  12. package/dist/commonjs/v3/sessions.js +3 -2
  13. package/dist/commonjs/v3/sessions.js.map +1 -1
  14. package/dist/commonjs/version.js +1 -1
  15. package/dist/esm/v3/ai.d.ts +171 -5
  16. package/dist/esm/v3/ai.js +309 -22
  17. package/dist/esm/v3/ai.js.map +1 -1
  18. package/dist/esm/v3/chat-server.d.ts +8 -0
  19. package/dist/esm/v3/chat-server.js +32 -10
  20. package/dist/esm/v3/chat-server.js.map +1 -1
  21. package/dist/esm/v3/chat-server.test.js +51 -0
  22. package/dist/esm/v3/chat-server.test.js.map +1 -1
  23. package/dist/esm/v3/createStartSessionAction.test.js +30 -0
  24. package/dist/esm/v3/createStartSessionAction.test.js.map +1 -1
  25. package/dist/esm/v3/sessions.d.ts +3 -2
  26. package/dist/esm/v3/sessions.js +3 -2
  27. package/dist/esm/v3/sessions.js.map +1 -1
  28. package/dist/esm/version.js +1 -1
  29. package/docs/ai/prompts.mdx +430 -0
  30. package/docs/ai-chat/actions.mdx +115 -0
  31. package/docs/ai-chat/anatomy.mdx +71 -0
  32. package/docs/ai-chat/backend.mdx +817 -0
  33. package/docs/ai-chat/background-injection.mdx +221 -0
  34. package/docs/ai-chat/changelog.mdx +850 -0
  35. package/docs/ai-chat/chat-local.mdx +174 -0
  36. package/docs/ai-chat/client-protocol.mdx +1081 -0
  37. package/docs/ai-chat/compaction.mdx +411 -0
  38. package/docs/ai-chat/custom-agents.mdx +364 -0
  39. package/docs/ai-chat/error-handling.mdx +415 -0
  40. package/docs/ai-chat/fast-starts.mdx +672 -0
  41. package/docs/ai-chat/frontend.mdx +580 -0
  42. package/docs/ai-chat/how-it-works.mdx +230 -0
  43. package/docs/ai-chat/lifecycle-hooks.mdx +530 -0
  44. package/docs/ai-chat/mcp.mdx +101 -0
  45. package/docs/ai-chat/overview.mdx +90 -0
  46. package/docs/ai-chat/patterns/branching-conversations.mdx +284 -0
  47. package/docs/ai-chat/patterns/code-sandbox.mdx +126 -0
  48. package/docs/ai-chat/patterns/database-persistence.mdx +414 -0
  49. package/docs/ai-chat/patterns/human-in-the-loop.mdx +275 -0
  50. package/docs/ai-chat/patterns/large-payloads.mdx +169 -0
  51. package/docs/ai-chat/patterns/oom-resilience.mdx +120 -0
  52. package/docs/ai-chat/patterns/persistence-and-replay.mdx +211 -0
  53. package/docs/ai-chat/patterns/recovery-boot.mdx +230 -0
  54. package/docs/ai-chat/patterns/skills.mdx +221 -0
  55. package/docs/ai-chat/patterns/sub-agents.mdx +383 -0
  56. package/docs/ai-chat/patterns/tool-result-auditing.mdx +148 -0
  57. package/docs/ai-chat/patterns/trusted-edge-signals.mdx +337 -0
  58. package/docs/ai-chat/patterns/version-upgrades.mdx +172 -0
  59. package/docs/ai-chat/pending-messages.mdx +343 -0
  60. package/docs/ai-chat/prompt-caching.mdx +206 -0
  61. package/docs/ai-chat/quick-start.mdx +161 -0
  62. package/docs/ai-chat/reference.mdx +909 -0
  63. package/docs/ai-chat/server-chat.mdx +263 -0
  64. package/docs/ai-chat/sessions.mdx +333 -0
  65. package/docs/ai-chat/testing.mdx +682 -0
  66. package/docs/ai-chat/tools.mdx +191 -0
  67. package/docs/ai-chat/types.mdx +242 -0
  68. package/docs/ai-chat/upgrade-guide.mdx +515 -0
  69. package/docs/apikeys.mdx +54 -0
  70. package/docs/building-with-ai.mdx +261 -0
  71. package/docs/bulk-actions.mdx +49 -0
  72. package/docs/changelog.mdx +6 -0
  73. package/docs/cli-deploy-commands.mdx +9 -0
  74. package/docs/cli-dev-commands.mdx +9 -0
  75. package/docs/cli-dev.mdx +8 -0
  76. package/docs/cli-init-commands.mdx +58 -0
  77. package/docs/cli-introduction.mdx +25 -0
  78. package/docs/cli-list-profiles-commands.mdx +42 -0
  79. package/docs/cli-login-commands.mdx +33 -0
  80. package/docs/cli-logout-commands.mdx +33 -0
  81. package/docs/cli-preview-archive.mdx +59 -0
  82. package/docs/cli-promote-commands.mdx +9 -0
  83. package/docs/cli-switch.mdx +43 -0
  84. package/docs/cli-update-commands.mdx +42 -0
  85. package/docs/cli-whoami-commands.mdx +33 -0
  86. package/docs/community.mdx +6 -0
  87. package/docs/config/config-file.mdx +602 -0
  88. package/docs/config/extensions/additionalFiles.mdx +38 -0
  89. package/docs/config/extensions/additionalPackages.mdx +40 -0
  90. package/docs/config/extensions/aptGet.mdx +34 -0
  91. package/docs/config/extensions/audioWaveform.mdx +20 -0
  92. package/docs/config/extensions/custom.mdx +380 -0
  93. package/docs/config/extensions/emitDecoratorMetadata.mdx +29 -0
  94. package/docs/config/extensions/esbuildPlugin.mdx +31 -0
  95. package/docs/config/extensions/ffmpeg.mdx +45 -0
  96. package/docs/config/extensions/lightpanda.mdx +56 -0
  97. package/docs/config/extensions/overview.mdx +67 -0
  98. package/docs/config/extensions/playwright.mdx +195 -0
  99. package/docs/config/extensions/prismaExtension.mdx +1014 -0
  100. package/docs/config/extensions/puppeteer.mdx +30 -0
  101. package/docs/config/extensions/pythonExtension.mdx +182 -0
  102. package/docs/config/extensions/syncEnvVars.mdx +291 -0
  103. package/docs/context.mdx +235 -0
  104. package/docs/database-connections.mdx +213 -0
  105. package/docs/deploy-environment-variables.mdx +435 -0
  106. package/docs/deployment/atomic-deployment.mdx +172 -0
  107. package/docs/deployment/overview.mdx +257 -0
  108. package/docs/deployment/preview-branches.mdx +224 -0
  109. package/docs/errors-retrying.mdx +379 -0
  110. package/docs/github-actions.mdx +222 -0
  111. package/docs/github-integration.mdx +136 -0
  112. package/docs/github-repo.mdx +8 -0
  113. package/docs/help-email.mdx +6 -0
  114. package/docs/help-slack.mdx +11 -0
  115. package/docs/hidden-tasks.mdx +56 -0
  116. package/docs/how-it-works.mdx +454 -0
  117. package/docs/how-to-reduce-your-spend.mdx +217 -0
  118. package/docs/idempotency.mdx +504 -0
  119. package/docs/introduction.mdx +223 -0
  120. package/docs/limits.mdx +241 -0
  121. package/docs/logging.mdx +195 -0
  122. package/docs/machines.mdx +952 -0
  123. package/docs/manual-setup.mdx +632 -0
  124. package/docs/mcp-agent-rules.mdx +41 -0
  125. package/docs/mcp-introduction.mdx +385 -0
  126. package/docs/mcp-tools.mdx +273 -0
  127. package/docs/migrating-from-v3.mdx +334 -0
  128. package/docs/observability/dashboards.mdx +102 -0
  129. package/docs/observability/query.mdx +585 -0
  130. package/docs/open-source-contributing.mdx +16 -0
  131. package/docs/open-source-self-hosting.mdx +541 -0
  132. package/docs/private-networking/aws-console-setup.mdx +304 -0
  133. package/docs/private-networking/overview.mdx +144 -0
  134. package/docs/private-networking/troubleshooting.mdx +78 -0
  135. package/docs/queue-concurrency.mdx +354 -0
  136. package/docs/quick-start.mdx +97 -0
  137. package/docs/realtime/auth.mdx +208 -0
  138. package/docs/realtime/backend/overview.mdx +45 -0
  139. package/docs/realtime/backend/streams.mdx +418 -0
  140. package/docs/realtime/backend/subscribe.mdx +225 -0
  141. package/docs/realtime/how-it-works.mdx +94 -0
  142. package/docs/realtime/overview.mdx +63 -0
  143. package/docs/realtime/react-hooks/overview.mdx +73 -0
  144. package/docs/realtime/react-hooks/streams.mdx +449 -0
  145. package/docs/realtime/react-hooks/subscribe.mdx +674 -0
  146. package/docs/realtime/react-hooks/swr.mdx +87 -0
  147. package/docs/realtime/react-hooks/triggering.mdx +194 -0
  148. package/docs/realtime/react-hooks/use-wait-token.mdx +34 -0
  149. package/docs/realtime/run-object.mdx +174 -0
  150. package/docs/replaying.mdx +72 -0
  151. package/docs/request-feature.mdx +6 -0
  152. package/docs/roadmap.mdx +6 -0
  153. package/docs/run-tests.mdx +20 -0
  154. package/docs/run-usage.mdx +113 -0
  155. package/docs/runs/heartbeats.mdx +38 -0
  156. package/docs/runs/max-duration.mdx +139 -0
  157. package/docs/runs/metadata.mdx +734 -0
  158. package/docs/runs/priority.mdx +31 -0
  159. package/docs/runs.mdx +396 -0
  160. package/docs/self-hosting/docker.mdx +458 -0
  161. package/docs/self-hosting/env/supervisor.mdx +74 -0
  162. package/docs/self-hosting/env/webapp.mdx +276 -0
  163. package/docs/self-hosting/kubernetes.mdx +601 -0
  164. package/docs/self-hosting/overview.mdx +108 -0
  165. package/docs/skills.mdx +85 -0
  166. package/docs/tags.mdx +120 -0
  167. package/docs/tasks/overview.mdx +697 -0
  168. package/docs/tasks/scheduled.mdx +382 -0
  169. package/docs/tasks/schemaTask.mdx +413 -0
  170. package/docs/tasks/streams.mdx +884 -0
  171. package/docs/triggering.mdx +1320 -0
  172. package/docs/troubleshooting-alerts.mdx +385 -0
  173. package/docs/troubleshooting-debugging-in-vscode.mdx +8 -0
  174. package/docs/troubleshooting-github-issues.mdx +6 -0
  175. package/docs/troubleshooting-uptime-status.mdx +6 -0
  176. package/docs/troubleshooting.mdx +398 -0
  177. package/docs/upgrading-packages.mdx +80 -0
  178. package/docs/vercel-integration.mdx +207 -0
  179. package/docs/versioning.mdx +56 -0
  180. package/docs/video-walkthrough.mdx +23 -0
  181. package/docs/wait-for-token.mdx +540 -0
  182. package/docs/wait-for.mdx +42 -0
  183. package/docs/wait-until.mdx +53 -0
  184. package/docs/wait.mdx +18 -0
  185. package/docs/writing-tasks-introduction.mdx +33 -0
  186. package/package.json +8 -5
  187. package/skills/trigger-authoring-chat-agent/SKILL.md +296 -0
  188. package/skills/trigger-authoring-tasks/SKILL.md +254 -0
  189. package/skills/trigger-chat-agent-advanced/SKILL.md +368 -0
  190. package/skills/trigger-cost-savings/SKILL.md +116 -0
  191. package/skills/trigger-realtime-and-frontend/SKILL.md +276 -0
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: "Build extensions"
3
+ sidebarTitle: "Overview"
4
+ description: "Customize how your project is built and deployed to Trigger.dev with build extensions"
5
+ ---
6
+
7
+ Build extensions allow you to hook into the build system and customize the build process or the resulting bundle and container image (in the case of deploying).
8
+
9
+ You can use pre-built extensions by installing the `@trigger.dev/build` package into your `devDependencies`, or you can create your own.
10
+
11
+ Build extensions are added to your `trigger.config.ts` file under the `build.extensions` property:
12
+
13
+ ```ts
14
+ import { defineConfig } from "@trigger.dev/sdk";
15
+
16
+ export default defineConfig({
17
+ project: "my-project",
18
+ build: {
19
+ extensions: [
20
+ {
21
+ name: "my-extension",
22
+ onBuildStart: async (context) => {
23
+ console.log("Build starting!");
24
+ },
25
+ },
26
+ ],
27
+ },
28
+ });
29
+ ```
30
+
31
+ If you are using a pre-built extension, you can import it from the `@trigger.dev/build` package:
32
+
33
+ ```ts
34
+ import { defineConfig } from "@trigger.dev/sdk";
35
+ import { ffmpeg } from "@trigger.dev/build/extensions/core";
36
+
37
+ export default defineConfig({
38
+ project: "my-project",
39
+ build: {
40
+ extensions: [ffmpeg()],
41
+ },
42
+ });
43
+ ```
44
+
45
+ ## Built-in extensions
46
+
47
+ Trigger.dev provides a set of built-in extensions that you can use to customize how your project is built and deployed. These extensions are available out of the box and can be configured in your `trigger.config.ts` file.
48
+
49
+ | Extension | Description |
50
+ | :-------------------------------------------------------------------- | :----------------------------------------------------------------------------- |
51
+ | [prismaExtension](/config/extensions/prismaExtension) | Using prisma in your Trigger.dev tasks |
52
+ | [pythonExtension](/config/extensions/pythonExtension) | Execute Python scripts in your project |
53
+ | [puppeteer](/config/extensions/puppeteer) | Use Puppeteer in your Trigger.dev tasks |
54
+ | [ffmpeg](/config/extensions/ffmpeg) | Use FFmpeg in your Trigger.dev tasks |
55
+ | [aptGet](/config/extensions/aptGet) | Install system packages in your build image |
56
+ | [additionalFiles](/config/extensions/additionalFiles) | Copy additional files to your build image |
57
+ | [additionalPackages](/config/extensions/additionalPackages) | Install additional npm packages in your build image |
58
+ | [syncEnvVars](/config/extensions/syncEnvVars) | Automatically sync environment variables from external services to Trigger.dev |
59
+ | [syncVercelEnvVars](/config/extensions/syncEnvVars#syncVercelEnvVars) | Automatically sync environment variables from Vercel to Trigger.dev |
60
+ | [syncSupabaseEnvVars](/config/extensions/syncEnvVars#syncSupabaseEnvVars) | Automatically sync environment variables from Supabase to Trigger.dev |
61
+ | [esbuildPlugin](/config/extensions/esbuildPlugin) | Add existing or custom esbuild extensions to customize your build process |
62
+ | [emitDecoratorMetadata](/config/extensions/emitDecoratorMetadata) | Enable `emitDecoratorMetadata` in your TypeScript build |
63
+ | [audioWaveform](/config/extensions/audioWaveform) | Add Audio Waveform to your build image |
64
+
65
+ ## Custom extensions
66
+
67
+ If one of the built-in extensions doesn't meet your needs, you can create your own custom extension. See our [guide on creating custom build extensions](/config/extensions/custom) for more information.
@@ -0,0 +1,195 @@
1
+ ---
2
+ title: "Playwright"
3
+ sidebarTitle: "playwright"
4
+ description: "Use the playwright build extension to use Playwright with Trigger.dev"
5
+ ---
6
+
7
+ If you are using [Playwright](https://playwright.dev/), you should use the Playwright build extension.
8
+
9
+ - Automatically installs Playwright and required browser dependencies
10
+ - Allows you to specify which browsers to install (chromium, firefox, webkit)
11
+ - Supports headless or non-headless mode
12
+ - Lets you specify the Playwright version, or auto-detects it
13
+ - Installs only the dependencies needed for the selected browsers to optimize build time and image size
14
+
15
+ <Note>
16
+ This extension only affects the build and deploy process, not the `dev` command.
17
+ </Note>
18
+
19
+ You can use it for a simple Playwright setup like this:
20
+
21
+ ```ts
22
+ import { defineConfig } from "@trigger.dev/sdk";
23
+ import { playwright } from "@trigger.dev/build/extensions/playwright";
24
+
25
+ export default defineConfig({
26
+ project: "<project ref>",
27
+ // Your other config settings...
28
+ build: {
29
+ extensions: [
30
+ playwright(),
31
+ ],
32
+ },
33
+ });
34
+ ```
35
+
36
+ ### Options
37
+
38
+ - `browsers`: Array of browsers to install. Valid values: `"chromium"`, `"firefox"`, `"webkit"`. Default: `["chromium"]`.
39
+ - `headless`: Run browsers in headless mode. Default: `true`. If set to `false`, a virtual display (Xvfb) will be set up automatically.
40
+ - `version`: Playwright version to install. If not provided, the version will be auto-detected from your dependencies (recommended).
41
+
42
+ <Warning>
43
+ Using a different version in your app than specified here will break things. We recommend not setting this option to automatically detect the version.
44
+ </Warning>
45
+
46
+ ### Custom browsers and version
47
+
48
+ ```ts
49
+ import { defineConfig } from "@trigger.dev/sdk";
50
+ import { playwright } from "@trigger.dev/build/extensions/playwright";
51
+
52
+ export default defineConfig({
53
+ project: "<project ref>",
54
+ build: {
55
+ extensions: [
56
+ playwright({
57
+ browsers: ["chromium", "webkit"], // optional, will use ["chromium"] if not provided
58
+ version: "1.43.1", // optional, will automatically detect the version if not provided
59
+ }),
60
+ ],
61
+ },
62
+ });
63
+ ```
64
+
65
+ ### Headless mode
66
+
67
+ By default, browsers are run in headless mode. If you need to run browsers with a UI (for example, for debugging), set `headless: false`. This will automatically set up a virtual display using Xvfb.
68
+
69
+ ```ts
70
+ import { defineConfig } from "@trigger.dev/sdk";
71
+ import { playwright } from "@trigger.dev/build/extensions/playwright";
72
+
73
+ export default defineConfig({
74
+ project: "<project ref>",
75
+ build: {
76
+ extensions: [
77
+ playwright({
78
+ headless: false,
79
+ }),
80
+ ],
81
+ },
82
+ });
83
+ ```
84
+
85
+ ### Environment variables
86
+
87
+ The extension sets the following environment variables during the build:
88
+
89
+ - `PLAYWRIGHT_BROWSERS_PATH`: Set to `/ms-playwright` so Playwright finds the installed browsers
90
+ - `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD`: Set to `1` to skip browser download at runtime
91
+ - `PLAYWRIGHT_SKIP_BROWSER_VALIDATION`: Set to `1` to skip browser validation at runtime
92
+ - `DISPLAY`: Set to `:99` if `headless: false` (for Xvfb)
93
+
94
+ ## Troubleshooting
95
+
96
+ ### Browser download failures
97
+
98
+ If you encounter errors during the build process related to browser downloads (e.g., "failed to solve: process did not complete successfully: exit code: 9"), this is a known issue with certain Playwright versions.
99
+
100
+ **Workaround:** Revert Playwright to version `1.40.0` in your project dependencies. You can specify this version explicitly in your config:
101
+
102
+ ```ts
103
+ import { defineConfig } from "@trigger.dev/sdk";
104
+ import { playwright } from "@trigger.dev/build/extensions/playwright";
105
+
106
+ export default defineConfig({
107
+ project: "<project ref>",
108
+ build: {
109
+ extensions: [
110
+ playwright({
111
+ version: "1.40.0",
112
+ }),
113
+ ],
114
+ },
115
+ });
116
+ ```
117
+
118
+ For more details, see [GitHub issue #2440](https://github.com/triggerdotdev/trigger.dev/issues/2440#issuecomment-3815104376).
119
+
120
+ ## Managing browser instances
121
+
122
+ To prevent issues with waits and resumes, you can use middleware and locals to manage the browser instance. This will ensure the browser is available for the whole run, and is properly cleaned up on waits, resumes, and after the run completes.
123
+
124
+ Here's an example using `chromium`, but you can adapt it for other browsers:
125
+
126
+ ```ts
127
+ import { logger, tasks, locals } from "@trigger.dev/sdk";
128
+ import { chromium, type Browser } from "playwright";
129
+
130
+ // Create a locals key for the browser instance
131
+ const PlaywrightBrowserLocal = locals.create<{ browser: Browser }>("playwright-browser");
132
+
133
+ export function getBrowser() {
134
+ return locals.getOrThrow(PlaywrightBrowserLocal).browser;
135
+ }
136
+
137
+ export function setBrowser(browser: Browser) {
138
+ locals.set(PlaywrightBrowserLocal, { browser });
139
+ }
140
+
141
+ tasks.middleware("playwright-browser", async ({ next }) => {
142
+ // Launch the browser before the task runs
143
+ const browser = await chromium.launch();
144
+ setBrowser(browser);
145
+ logger.log("[chromium]: Browser launched (middleware)");
146
+
147
+ try {
148
+ await next();
149
+ } finally {
150
+ // Always close the browser after the task completes
151
+ await browser.close();
152
+ logger.log("[chromium]: Browser closed (middleware)");
153
+ }
154
+ });
155
+
156
+ tasks.onWait("playwright-browser", async () => {
157
+ // Close the browser when the run is waiting
158
+ const browser = getBrowser();
159
+ await browser.close();
160
+ logger.log("[chromium]: Browser closed (onWait)");
161
+ });
162
+
163
+ tasks.onResume("playwright-browser", async () => {
164
+ // Relaunch the browser when the run resumes
165
+ // Note: You will have to have to manually get a new browser instance in the run function
166
+ const browser = await chromium.launch();
167
+ setBrowser(browser);
168
+ logger.log("[chromium]: Browser launched (onResume)");
169
+ });
170
+ ```
171
+
172
+ You can then use `getBrowser()` in your task's `run` function to access the browser instance:
173
+
174
+ ```ts
175
+ export const playwrightTestTask = task({
176
+ id: "playwright-test",
177
+ run: async () => {
178
+ const browser = getBrowser();
179
+ const page = await browser.newPage();
180
+ await page.goto("https://google.com");
181
+ await page.screenshot({ path: "screenshot.png" });
182
+ await page.close();
183
+
184
+ // Waits will gracefully close the browser
185
+ await wait.for({ seconds: 10 });
186
+
187
+ // On resume, we will re-launch the browser but you will have to manually get the new instance
188
+ const newBrowser = getBrowser();
189
+ const newPage = await newBrowser.newPage();
190
+ await newPage.goto("https://playwright.dev");
191
+ await newPage.screenshot({ path: "screenshot2.png" });
192
+ await newPage.close();
193
+ },
194
+ });
195
+ ```