@trigger.dev/sdk 4.5.5 → 4.5.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 (37) hide show
  1. package/dist/commonjs/v3/agentSkillsRuntime.js +17 -7
  2. package/dist/commonjs/v3/agentSkillsRuntime.js.map +1 -1
  3. package/dist/commonjs/v3/ai.d.ts +49 -8
  4. package/dist/commonjs/v3/ai.js +151 -27
  5. package/dist/commonjs/v3/ai.js.map +1 -1
  6. package/dist/commonjs/v3/aiAutoTelemetry.js +3 -3
  7. package/dist/commonjs/v3/aiAutoTelemetry.js.map +1 -1
  8. package/dist/commonjs/v3/index.js +17 -7
  9. package/dist/commonjs/v3/index.js.map +1 -1
  10. package/dist/commonjs/v3/runs.d.ts +10 -10
  11. package/dist/commonjs/v3/skill.js +17 -7
  12. package/dist/commonjs/v3/skill.js.map +1 -1
  13. package/dist/commonjs/v3/test/test-session-handle.js +20 -8
  14. package/dist/commonjs/v3/test/test-session-handle.js.map +1 -1
  15. package/dist/commonjs/v3/triggerClient.js +17 -7
  16. package/dist/commonjs/v3/triggerClient.js.map +1 -1
  17. package/dist/commonjs/v3/triggerClient.types.test.js +17 -7
  18. package/dist/commonjs/v3/triggerClient.types.test.js.map +1 -1
  19. package/dist/commonjs/version.js +1 -1
  20. package/dist/esm/v3/ai.d.ts +49 -8
  21. package/dist/esm/v3/ai.js +151 -27
  22. package/dist/esm/v3/ai.js.map +1 -1
  23. package/dist/esm/v3/aiAutoTelemetry.js +3 -3
  24. package/dist/esm/v3/aiAutoTelemetry.js.map +1 -1
  25. package/dist/esm/v3/test/test-session-handle.js +20 -8
  26. package/dist/esm/v3/test/test-session-handle.js.map +1 -1
  27. package/dist/esm/version.js +1 -1
  28. package/docs/ai-chat/changelog.mdx +2 -2
  29. package/docs/ai-chat/compaction.mdx +2 -2
  30. package/docs/ai-chat/custom-agents.mdx +15 -20
  31. package/docs/ai-chat/fast-starts.mdx +2 -2
  32. package/docs/ai-chat/pending-messages.mdx +6 -2
  33. package/docs/ai-chat/reference.mdx +2 -2
  34. package/docs/self-hosting/docker.mdx +19 -1
  35. package/docs/self-hosting/env/webapp.mdx +2 -1
  36. package/docs/self-hosting/kubernetes.mdx +24 -2
  37. package/package.json +3 -3
@@ -40,10 +40,10 @@ async function register() {
40
40
  if (typeof aiMod.registerTelemetry !== "function") {
41
41
  return; // v5 / v6 — `ai` core emits spans itself, nothing to wire.
42
42
  }
43
- // Computed specifier keeps the optional peer out of static bundler
44
- // resolution; resolves at runtime only when the customer installed it.
43
+ // Computed specifier + @vite-ignore keep the optional peer out of static
44
+ // bundler resolution; resolves at runtime only when installed.
45
45
  const otelSpecifier = ["@ai-sdk", "otel"].join("/");
46
- const otelMod = await import(otelSpecifier).catch(() => null);
46
+ const otelMod = await import(/* @vite-ignore */ otelSpecifier).catch(() => null);
47
47
  if (typeof otelMod?.OpenTelemetry !== "function") {
48
48
  return; // optional peer not installed
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"aiAutoTelemetry.js","sourceRoot":"","sources":["../../../src/v3/aiAutoTelemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,IAAI,YAAY,GAAyB,IAAI,CAAC;AAE9C,yFAAyF;AACzF,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,IAAI,CAAC;QACH,IAAI,sBAAsB,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,iDAAiD;QAC3D,CAAC;QACD,MAAM,KAAK,GAAQ,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAClD,OAAO,CAAC,2DAA2D;QACrE,CAAC;QACD,mEAAmE;QACnE,uEAAuE;QACvE,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,OAAO,GAAQ,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,OAAO,OAAO,EAAE,aAAa,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO,CAAC,8BAA8B;QACxC,CAAC;QACD,IAAI,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,8DAA8D;QACxE,CAAC;QACD,KAAK,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,WAAW,EAAE,CAAC;IAC1E,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAAC,aAAkB;IACjD,MAAM,YAAY,GAAI,UAAkB,CAAC,6BAA6B,CAAC;IACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,WAAgB,EAAE,EAAE,CACnB,CAAC,OAAO,aAAa,KAAK,UAAU,IAAI,WAAW,YAAY,aAAa,CAAC;QAC7E,WAAW,EAAE,WAAW,EAAE,IAAI,KAAK,eAAe,CACrD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"aiAutoTelemetry.js","sourceRoot":"","sources":["../../../src/v3/aiAutoTelemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,IAAI,YAAY,GAAyB,IAAI,CAAC;AAE9C,yFAAyF;AACzF,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,IAAI,CAAC;QACH,IAAI,sBAAsB,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,iDAAiD;QAC3D,CAAC;QACD,MAAM,KAAK,GAAQ,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAClD,OAAO,CAAC,2DAA2D;QACrE,CAAC;QACD,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,OAAO,GAAQ,MAAM,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,OAAO,OAAO,EAAE,aAAa,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO,CAAC,8BAA8B;QACxC,CAAC;QACD,IAAI,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,8DAA8D;QACxE,CAAC;QACD,KAAK,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,WAAW,EAAE,CAAC;IAC1E,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAAC,aAAkB;IACjD,MAAM,YAAY,GAAI,UAAkB,CAAC,6BAA6B,CAAC;IACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,WAAgB,EAAE,EAAE,CACnB,CAAC,OAAO,aAAa,KAAK,UAAU,IAAI,WAAW,YAAY,aAAa,CAAC;QAC7E,WAAW,EAAE,WAAW,EAAE,IAAI,KAAK,eAAe,CACrD,CAAC;AACJ,CAAC"}
@@ -93,34 +93,40 @@ export class TestSessionOutputChannel extends SessionOutputChannel {
93
93
  pipe(value, _options) {
94
94
  const state = this.state;
95
95
  const readChunks = [];
96
+ let pipeError;
96
97
  let resolveDone;
97
98
  const done = new Promise((resolve) => {
98
99
  resolveDone = resolve;
99
100
  });
100
101
  (async () => {
101
- const readable = ensureReadableStream(value);
102
- const reader = readable.getReader();
102
+ let reader;
103
103
  try {
104
+ const readable = ensureReadableStream(value);
105
+ reader = readable.getReader();
104
106
  while (true) {
105
107
  const { done: d, value: v } = await reader.read();
106
108
  if (d)
107
- return;
109
+ break;
108
110
  readChunks.push(v);
109
111
  notify(state, v);
110
112
  }
111
113
  }
114
+ catch (err) {
115
+ // Mirror production: a source-stream error (or a throw from stream
116
+ // setup) rejects waitUntilComplete instead of being silently
117
+ // swallowed, so callers (e.g. chat.pipeAndCapture) can observe it.
118
+ pipeError = err;
119
+ }
112
120
  finally {
113
121
  try {
114
- reader.releaseLock();
122
+ reader?.releaseLock();
115
123
  }
116
124
  catch {
117
125
  // ignore
118
126
  }
119
127
  resolveDone();
120
128
  }
121
- })().catch(() => {
122
- resolveDone();
123
- });
129
+ })();
124
130
  const replayStream = new ReadableStream({
125
131
  async start(controller) {
126
132
  await done;
@@ -136,6 +142,8 @@ export class TestSessionOutputChannel extends SessionOutputChannel {
136
142
  },
137
143
  waitUntilComplete: async () => {
138
144
  await done;
145
+ if (pipeError)
146
+ throw pipeError;
139
147
  return emptyResult;
140
148
  },
141
149
  };
@@ -219,7 +227,11 @@ export class TestSessionOutputChannel extends SessionOutputChannel {
219
227
  }
220
228
  }
221
229
  notify(this.state, synthetic);
222
- return {};
230
+ // Project a synthetic monotonic seq_num as the ack's `lastEventId`,
231
+ // mirroring what S2 returns in production (there it's the control
232
+ // record's seq_num). Using the running `.out` record count lets
233
+ // `chat.writeTurnComplete()` surface a real resume cursor in tests.
234
+ return { lastEventId: String(this.state.chunks.length) };
223
235
  }
224
236
  /**
225
237
  * No-op in the mock harness. Production trims keep `session.out` bounded;
@@ -1 +1 @@
1
- {"version":3,"file":"test-session-handle.js","sourceRoot":"","sources":["../../../../src/v3/test/test-session-handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-session-handle.js","sourceRoot":"","sources":["../../../../src/v3/test/test-session-handle.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const VERSION = "4.5.5";
1
+ export const VERSION = "4.5.7";
2
2
  //# sourceMappingURL=version.js.map
@@ -55,10 +55,10 @@ if (isFinal) {
55
55
  const result = streamText({ model, messages: conversation.modelMessages, tools });
56
56
  // Pass originalMessages so the handed-over tool round merges into the
57
57
  // step-1 assistant instead of starting a new message.
58
- const response = await chat.pipeAndCapture(result, {
58
+ const { message } = await chat.pipeAndCapture(result, {
59
59
  originalMessages: conversation.uiMessages,
60
60
  });
61
- if (response) await conversation.addResponse(response);
61
+ if (message) await conversation.addResponse(message);
62
62
  }
63
63
  ```
64
64
 
@@ -365,8 +365,8 @@ for (let turn = 0; turn < 100; turn++) {
365
365
  stopWhen: stepCountIs(15),
366
366
  });
367
367
 
368
- const response = await chat.pipeAndCapture(result);
369
- if (response) await conversation.addResponse(response);
368
+ const { message } = await chat.pipeAndCapture(result);
369
+ if (message) await conversation.addResponse(message);
370
370
 
371
371
  // Outer-loop compaction
372
372
  const usage = await result.totalUsage;
@@ -160,11 +160,11 @@ for await (const turn of session) {
160
160
  });
161
161
 
162
162
  // Manual: pipe and capture separately
163
- const response = await chat.pipeAndCapture(result, { signal: turn.signal });
163
+ const { message } = await chat.pipeAndCapture(result, { signal: turn.signal });
164
164
 
165
- if (response) {
165
+ if (message) {
166
166
  // Custom processing before accumulating
167
- await turn.addResponse(response);
167
+ await turn.addResponse(message);
168
168
  }
169
169
 
170
170
  // Custom persistence, analytics, etc.
@@ -215,8 +215,8 @@ For full control, skip `createSession` and compose the primitives directly:
215
215
  | ------------------------------- | -------------------------------------------------------------------------------------------- |
216
216
  | `chat.messages` | Input stream for incoming messages — use `.waitWithIdleTimeout()` to wait for the next turn |
217
217
  | `chat.createStopSignal()` | Create a managed stop signal wired to the stop input stream |
218
- | `chat.pipeAndCapture(result)` | Pipe a `StreamTextResult` to the chat stream and capture the response |
219
- | `chat.writeTurnComplete()` | Signal the frontend that the current turn is complete |
218
+ | `chat.pipeAndCapture(result)` | Pipe a stream and capture the response; returns `{ message, status, error }` |
219
+ | `chat.writeTurnComplete()` | Signal turn complete; returns `{ lastEventId, sessionInEventId }` resume cursors |
220
220
  | `chat.MessageAccumulator` | Accumulates conversation messages across turns |
221
221
  | `chat.pipe(stream)` | Pipe a stream to the frontend (no response capture) |
222
222
  | `chat.cleanupAbortedParts(msg)` | Clean up incomplete parts from a stopped response |
@@ -285,21 +285,16 @@ export const myChat = chat.customAgent({
285
285
  stopWhen: stepCountIs(15),
286
286
  });
287
287
 
288
- let response;
289
- try {
290
- response = await chat.pipeAndCapture(result, { signal: combinedSignal });
291
- } catch (error) {
292
- if (error instanceof Error && error.name === "AbortError") {
293
- if (runSignal.aborted) break;
294
- // Stop — fall through to accumulate partial
295
- } else {
296
- throw error;
297
- }
298
- }
288
+ const { message, status, error } = await chat.pipeAndCapture(result, {
289
+ signal: combinedSignal,
290
+ });
291
+ // pipeAndCapture never throws: a user stop returns status "aborted" with
292
+ // the partial message, and a failure returns status "error" with `error`.
293
+ if (status === "error") throw error;
299
294
 
300
- if (response) {
295
+ if (message) {
301
296
  const cleaned =
302
- stop.signal.aborted && !runSignal.aborted ? chat.cleanupAbortedParts(response) : response;
297
+ stop.signal.aborted && !runSignal.aborted ? chat.cleanupAbortedParts(message) : message;
303
298
  await conversation.addResponse(cleaned);
304
299
  }
305
300
 
@@ -346,8 +341,8 @@ const messages = await conversation.addIncoming(
346
341
  );
347
342
 
348
343
  // After piping, add the response
349
- const response = await chat.pipeAndCapture(result);
350
- if (response) await conversation.addResponse(response);
344
+ const { message } = await chat.pipeAndCapture(result);
345
+ if (message) await conversation.addResponse(message);
351
346
 
352
347
  // Access accumulated messages for persistence
353
348
  conversation.uiMessages; // UIMessage[]
@@ -589,10 +589,10 @@ if (turn === 0 && payload.trigger === "handover-prepare") {
589
589
  messages: conversation.modelMessages,
590
590
  stopWhen: stepCountIs(10),
591
591
  });
592
- const response = await chat.pipeAndCapture(result, {
592
+ const { message } = await chat.pipeAndCapture(result, {
593
593
  originalMessages: conversation.uiMessages,
594
594
  });
595
- if (response) await conversation.addResponse(response);
595
+ if (message) await conversation.addResponse(message);
596
596
  }
597
597
  await chat.writeTurnComplete(); // on isFinal the warm partial is already the response
598
598
  return;
@@ -179,10 +179,14 @@ for (let turn = 0; turn < 100; turn++) {
179
179
  stopWhen: stepCountIs(15),
180
180
  });
181
181
 
182
- const response = await chat.pipeAndCapture(result);
182
+ const { message, status, error } = await chat.pipeAndCapture(result);
183
183
  sub.off();
184
184
 
185
- if (response) await conversation.addResponse(response);
185
+ // Keep any partial output, then branch on the outcome: pipeAndCapture no
186
+ // longer throws, so rethrow a real failure and don't complete a failed turn.
187
+ if (message) await conversation.addResponse(message);
188
+ if (status === "error") throw error;
189
+
186
190
  await chat.writeTurnComplete();
187
191
  }
188
192
  ```
@@ -503,8 +503,8 @@ All methods available on the `chat` object from `@trigger.dev/sdk/ai`.
503
503
  | `chat.agent(options)` | Create a chat agent |
504
504
  | `chat.createSession(payload, options)` | Create an async iterator for chat turns |
505
505
  | `chat.pipe(source, options?)` | Pipe a stream to the frontend (from anywhere inside a task) |
506
- | `chat.pipeAndCapture(source, options?)` | Pipe and capture the response `UIMessage` |
507
- | `chat.writeTurnComplete(options?)` | Signal the frontend that the current turn is complete |
506
+ | `chat.pipeAndCapture(source, options?)` | Pipe and capture the response; returns `{ message, status, error }` |
507
+ | `chat.writeTurnComplete(options?)` | Signal turn complete; returns `{ lastEventId, sessionInEventId }` resume cursors |
508
508
  | `chat.createStopSignal()` | Create a managed stop signal wired to the stop input stream |
509
509
  | `chat.messages` | Input stream for incoming messages — use `.waitWithIdleTimeout()` |
510
510
  | `chat.local<T>({ id })` | Create a per-run typed local (see [`chat.local`](/ai-chat/chat-local)) |
@@ -75,12 +75,23 @@ git clone --depth=1 https://github.com/triggerdotdev/trigger.dev
75
75
  cd trigger.dev/hosting/docker
76
76
  ```
77
77
 
78
- 2. Create a `.env` file
78
+ 2. Create a `.env` file and generate secrets
79
79
 
80
80
  ```bash
81
81
  cp .env.example .env
82
+
83
+ # Fills the required secrets in .env with strong, unique values.
84
+ # Safe to re-run - it never overwrites a secret you've already set.
85
+ ./generate-secrets.sh
82
86
  ```
83
87
 
88
+ <Note>
89
+ The stack ships no working default credentials. `generate-secrets.sh` fills the
90
+ application secrets and the bundled datastore passwords with strong, unique values.
91
+ Keep them safe - rotating the encryption key or session secret later will invalidate
92
+ existing sessions and encrypted data.
93
+ </Note>
94
+
84
95
  3. Start the webapp
85
96
 
86
97
  ```bash
@@ -130,6 +141,13 @@ docker compose up -d
130
141
 
131
142
  4. Configure the supervisor using the [environment variables](/self-hosting/env/supervisor) in your `.env` file, including the [worker token](#worker-token).
132
143
 
144
+ <Warning>
145
+ For a split webapp/worker setup, set `MANAGED_WORKER_SECRET` on the worker to
146
+ the **same** value as the webapp's `MANAGED_WORKER_SECRET`. Don't run
147
+ `generate-secrets.sh` on the worker host - it would create a mismatched value
148
+ and the worker would fail to authenticate.
149
+ </Warning>
150
+
133
151
  5. Apply the changes:
134
152
 
135
153
  ```bash
@@ -11,7 +11,8 @@ mode: "wide"
11
11
  | `SESSION_SECRET` | Yes | — | Session encryption secret. Run: `openssl rand -hex 16` |
12
12
  | `MAGIC_LINK_SECRET` | Yes | — | Magic link encryption secret. Run: `openssl rand -hex 16` |
13
13
  | `ENCRYPTION_KEY` | Yes | — | Secret store encryption key. Run: `openssl rand -hex 16` |
14
- | `MANAGED_WORKER_SECRET` | No | managed-secret | Managed worker secret. Should be changed and match supervisor. |
14
+ | `MANAGED_WORKER_SECRET` | Yes | | Managed worker secret. Must be set and match supervisor. Run: `openssl rand -hex 32` |
15
+ | `ALLOW_INSECURE_DEFAULT_SECRETS` | No | false | Boot even if a secret is still a known-insecure published default. Temporary escape hatch for values you can't safely rotate yet (see [Secret generation and rotation](/self-hosting/kubernetes#secret-generation-and-rotation)). |
15
16
  | **Domains & ports** | | | |
16
17
  | `REMIX_APP_PORT` | No | 3030 | Remix app port. |
17
18
  | `APP_ORIGIN` | Yes | http://localhost:3030 | App origin URL. |
@@ -121,8 +121,10 @@ The default values are insecure and are only suitable for testing. You will need
121
121
  Create a `values-custom.yaml` file to override the defaults. For example:
122
122
 
123
123
  ```yaml
124
- # Generate new secrets with `openssl rand -hex 16`
125
- # WARNING: You should probably use an existingSecret instead
124
+ # Leave these unset to have the chart auto-generate strong values on first
125
+ # install (retained across upgrades). Set them explicitly only if you need to
126
+ # control the value - e.g. sharing MANAGED_WORKER_SECRET with an external
127
+ # supervisor - or use an existingSecret.
126
128
  secrets:
127
129
  enabled: true
128
130
  sessionSecret: "your-32-char-hex-secret-1"
@@ -133,6 +135,8 @@ secrets:
133
135
  # - SESSION_SECRET
134
136
  # - MAGIC_LINK_SECRET
135
137
  # - ENCRYPTION_KEY
138
+ # - PROVIDER_SECRET
139
+ # - COORDINATOR_SECRET
136
140
  # - MANAGED_WORKER_SECRET
137
141
  # - OBJECT_STORE_ACCESS_KEY_ID
138
142
  # - OBJECT_STORE_SECRET_ACCESS_KEY
@@ -176,6 +180,24 @@ helm upgrade -n trigger --install trigger \
176
180
  -f values-custom.yaml
177
181
  ```
178
182
 
183
+ ### Secret generation and rotation
184
+
185
+ Application, control-plane, and bundled-datastore secrets left unset are generated on
186
+ first install and **retained across `helm upgrade`** - they are never rotated
187
+ automatically, so sessions, encrypted data, and datastore volumes survive upgrades.
188
+
189
+ <Warning>
190
+ GitOps tools that render with `helm template` (e.g. Argo CD) cannot read the existing
191
+ secret, so they regenerate these values on every sync - which rotates them. If you
192
+ deploy via GitOps, always supply your own `secrets.existingSecret` (and datastore
193
+ credentials) so nothing is generated in-cluster.
194
+ </Warning>
195
+
196
+ There is no clean migration for a compromised `ENCRYPTION_KEY`: changing it makes
197
+ existing encrypted data unreadable. If a deployment is still running a previously
198
+ published default and cannot rotate yet, set `ALLOW_INSECURE_DEFAULT_SECRETS=true` on
199
+ the webapp to keep booting while you plan a migration.
200
+
179
201
  ### Extra env
180
202
 
181
203
  You can set extra environment variables on all services. For example:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/sdk",
3
- "version": "4.5.5",
3
+ "version": "4.5.7",
4
4
  "description": "trigger.dev Node.JS SDK",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -66,7 +66,7 @@
66
66
  "dependencies": {
67
67
  "@opentelemetry/api": "1.9.1",
68
68
  "@opentelemetry/semantic-conventions": "1.41.1",
69
- "@trigger.dev/core": "4.5.5",
69
+ "@trigger.dev/core": "4.5.7",
70
70
  "chalk": "^5.2.0",
71
71
  "cronstrue": "^2.21.0",
72
72
  "debug": "^4.3.4",
@@ -78,7 +78,7 @@
78
78
  },
79
79
  "devDependencies": {
80
80
  "@ai-sdk/provider": "3.0.8",
81
- "@arethetypeswrong/cli": "^0.15.4",
81
+ "@arethetypeswrong/cli": "^0.18.5",
82
82
  "@types/debug": "^4.1.7",
83
83
  "@types/react": "^19.2.14",
84
84
  "@types/slug": "^5.0.3",