@trigger.dev/sdk 4.7.3 → 4.8.0-webhooks.20261015065339

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 (154) hide show
  1. package/dist/commonjs/v3/ai.d.ts +560 -8
  2. package/dist/commonjs/v3/ai.js +2263 -178
  3. package/dist/commonjs/v3/ai.js.map +1 -1
  4. package/dist/commonjs/v3/chat.d.ts +23 -0
  5. package/dist/commonjs/v3/chat.js.map +1 -1
  6. package/dist/commonjs/v3/concurrencyLimits.d.ts +37 -7
  7. package/dist/commonjs/v3/concurrencyLimits.js +38 -70
  8. package/dist/commonjs/v3/concurrencyLimits.js.map +1 -1
  9. package/dist/commonjs/v3/index.d.ts +3 -1
  10. package/dist/commonjs/v3/index.js +23 -17
  11. package/dist/commonjs/v3/index.js.map +1 -1
  12. package/dist/commonjs/v3/modelFileDownload.d.ts +10 -0
  13. package/dist/commonjs/v3/modelFileDownload.js +164 -0
  14. package/dist/commonjs/v3/modelFileDownload.js.map +1 -0
  15. package/dist/commonjs/v3/runs.d.ts +22 -1
  16. package/dist/commonjs/v3/runs.js +6 -3
  17. package/dist/commonjs/v3/runs.js.map +1 -1
  18. package/dist/commonjs/v3/test/index.d.ts +2 -1
  19. package/dist/commonjs/v3/test/index.js +4 -1
  20. package/dist/commonjs/v3/test/index.js.map +1 -1
  21. package/dist/commonjs/v3/test/mock-channel-connector.d.ts +172 -0
  22. package/dist/commonjs/v3/test/mock-channel-connector.js +173 -0
  23. package/dist/commonjs/v3/test/mock-channel-connector.js.map +1 -0
  24. package/dist/commonjs/v3/test/mock-chat-agent.d.ts +81 -1
  25. package/dist/commonjs/v3/test/mock-chat-agent.js +137 -10
  26. package/dist/commonjs/v3/test/mock-chat-agent.js.map +1 -1
  27. package/dist/commonjs/v3/transcriptStorage.d.ts +44 -1
  28. package/dist/commonjs/v3/transcriptStorage.js +24 -0
  29. package/dist/commonjs/v3/transcriptStorage.js.map +1 -1
  30. package/dist/commonjs/v3/webhookWaiters.d.ts +80 -0
  31. package/dist/commonjs/v3/webhookWaiters.js +156 -0
  32. package/dist/commonjs/v3/webhookWaiters.js.map +1 -0
  33. package/dist/commonjs/v3/webhooks.d.ts +178 -2
  34. package/dist/commonjs/v3/webhooks.js +322 -1
  35. package/dist/commonjs/v3/webhooks.js.map +1 -1
  36. package/dist/commonjs/version.js +1 -1
  37. package/dist/esm/v3/ai.d.ts +560 -8
  38. package/dist/esm/v3/ai.js +2257 -178
  39. package/dist/esm/v3/ai.js.map +1 -1
  40. package/dist/esm/v3/chat.d.ts +23 -0
  41. package/dist/esm/v3/chat.js.map +1 -1
  42. package/dist/esm/v3/concurrencyLimits.d.ts +37 -7
  43. package/dist/esm/v3/concurrencyLimits.js +38 -70
  44. package/dist/esm/v3/concurrencyLimits.js.map +1 -1
  45. package/dist/esm/v3/index.d.ts +3 -1
  46. package/dist/esm/v3/index.js +1 -0
  47. package/dist/esm/v3/index.js.map +1 -1
  48. package/dist/esm/v3/modelFileDownload.d.ts +10 -0
  49. package/dist/esm/v3/modelFileDownload.js +161 -0
  50. package/dist/esm/v3/modelFileDownload.js.map +1 -0
  51. package/dist/esm/v3/runs.d.ts +22 -1
  52. package/dist/esm/v3/runs.js +6 -3
  53. package/dist/esm/v3/runs.js.map +1 -1
  54. package/dist/esm/v3/test/index.d.ts +2 -1
  55. package/dist/esm/v3/test/index.js +2 -1
  56. package/dist/esm/v3/test/index.js.map +1 -1
  57. package/dist/esm/v3/test/mock-channel-connector.d.ts +172 -0
  58. package/dist/esm/v3/test/mock-channel-connector.js +170 -0
  59. package/dist/esm/v3/test/mock-channel-connector.js.map +1 -0
  60. package/dist/esm/v3/test/mock-chat-agent.d.ts +81 -1
  61. package/dist/esm/v3/test/mock-chat-agent.js +137 -11
  62. package/dist/esm/v3/test/mock-chat-agent.js.map +1 -1
  63. package/dist/esm/v3/transcriptStorage.d.ts +44 -1
  64. package/dist/esm/v3/transcriptStorage.js +24 -0
  65. package/dist/esm/v3/transcriptStorage.js.map +1 -1
  66. package/dist/esm/v3/webhookWaiters.d.ts +80 -0
  67. package/dist/esm/v3/webhookWaiters.js +149 -0
  68. package/dist/esm/v3/webhookWaiters.js.map +1 -0
  69. package/dist/esm/v3/webhooks.d.ts +178 -2
  70. package/dist/esm/v3/webhooks.js +318 -1
  71. package/dist/esm/v3/webhooks.js.map +1 -1
  72. package/dist/esm/version.js +1 -1
  73. package/docs/ai-chat/actions.mdx +6 -1
  74. package/docs/ai-chat/backend.mdx +34 -0
  75. package/docs/ai-chat/patterns/sub-agents.mdx +33 -0
  76. package/docs/ai-chat/pending-messages.mdx +2 -0
  77. package/docs/ai-chat/reference.mdx +50 -2
  78. package/docs/apikeys.mdx +3 -3
  79. package/docs/billing-limits.mdx +1 -1
  80. package/docs/cli-env-commands.mdx +5 -4
  81. package/docs/cli-init-commands.mdx +27 -1
  82. package/docs/cli-login-commands.mdx +20 -0
  83. package/docs/cli-projects-commands.mdx +13 -1
  84. package/docs/cli-runs-commands.mdx +3 -2
  85. package/docs/cli-update-commands.mdx +9 -3
  86. package/docs/cli-whoami-commands.mdx +12 -0
  87. package/docs/concurrency.mdx +32 -0
  88. package/docs/config/extensions/audioWaveform.mdx +4 -1
  89. package/docs/config/extensions/overview.mdx +2 -0
  90. package/docs/config/extensions/prismaExtension.mdx +2 -3
  91. package/docs/config/extensions/puppeteer.mdx +3 -5
  92. package/docs/config/extensions/pythonExtension.mdx +9 -1
  93. package/docs/config/extensions/syncEnvVars.mdx +6 -0
  94. package/docs/deploy-environment-variables.mdx +1 -1
  95. package/docs/deployment/atomic-deployment.mdx +2 -0
  96. package/docs/deployment/dev-branches.mdx +5 -5
  97. package/docs/deployment/overview.mdx +8 -7
  98. package/docs/deployment/preview-branches.mdx +6 -3
  99. package/docs/errors-retrying.mdx +4 -4
  100. package/docs/how-it-works.mdx +5 -5
  101. package/docs/introduction.mdx +6 -0
  102. package/docs/limits.mdx +26 -8
  103. package/docs/logging.mdx +1 -1
  104. package/docs/machines.mdx +1 -1
  105. package/docs/mcp-introduction.mdx +8 -7
  106. package/docs/mcp-tools.mdx +91 -1
  107. package/docs/migrating-from-v3.mdx +1 -1
  108. package/docs/observability/dashboards.mdx +2 -0
  109. package/docs/observability/query.mdx +6 -2
  110. package/docs/private-networking/aws-console-setup.mdx +1 -1
  111. package/docs/private-networking/overview.mdx +1 -1
  112. package/docs/quick-start.mdx +3 -40
  113. package/docs/realtime/auth.mdx +1 -1
  114. package/docs/realtime/backend/input-streams.mdx +159 -0
  115. package/docs/realtime/backend/streams.mdx +25 -10
  116. package/docs/realtime/how-it-works.mdx +1 -1
  117. package/docs/realtime/react-hooks/overview.mdx +1 -1
  118. package/docs/realtime/react-hooks/streams.mdx +2 -2
  119. package/docs/realtime/react-hooks/subscribe.mdx +19 -3
  120. package/docs/realtime/react-hooks/triggering.mdx +2 -2
  121. package/docs/realtime/react-hooks/use-wait-token.mdx +1 -1
  122. package/docs/realtime/run-object.mdx +47 -24
  123. package/docs/replaying.mdx +26 -1
  124. package/docs/reports.mdx +4 -2
  125. package/docs/run-tests.mdx +2 -2
  126. package/docs/run-usage.mdx +3 -3
  127. package/docs/runs/heartbeats.mdx +2 -2
  128. package/docs/runs/list-best-practices.mdx +234 -0
  129. package/docs/runs/metadata.mdx +7 -10
  130. package/docs/runs.mdx +18 -8
  131. package/docs/self-hosting/env/supervisor.mdx +2 -0
  132. package/docs/self-hosting/env/webapp.mdx +5 -0
  133. package/docs/self-hosting/overview.mdx +26 -0
  134. package/docs/tags.mdx +6 -0
  135. package/docs/tasks/scheduled.mdx +11 -5
  136. package/docs/triggering.mdx +8 -0
  137. package/docs/troubleshooting-alerts.mdx +102 -3
  138. package/docs/troubleshooting.mdx +1 -1
  139. package/docs/upgrading-packages.mdx +3 -3
  140. package/docs/vercel-integration.mdx +13 -3
  141. package/docs/versioning.mdx +1 -1
  142. package/docs/wait-for-token.mdx +3 -3
  143. package/docs/webhooks/channels.mdx +128 -0
  144. package/docs/webhooks/connect.mdx +80 -0
  145. package/docs/webhooks/deliveries.mdx +92 -0
  146. package/docs/webhooks/filters.mdx +109 -0
  147. package/docs/webhooks/human-in-the-loop.mdx +149 -0
  148. package/docs/webhooks/linear.mdx +185 -0
  149. package/docs/webhooks/overview.mdx +99 -0
  150. package/docs/webhooks/session-routing.mdx +132 -0
  151. package/docs/webhooks/slack.mdx +360 -0
  152. package/docs/webhooks/sources.mdx +217 -0
  153. package/docs/webhooks/waiters.mdx +170 -0
  154. package/package.json +3 -2
@@ -0,0 +1,161 @@
1
+ const MAX_MODEL_FILE_BYTES = 100 * 1024 * 1024;
2
+ const MAX_REDIRECTS = 5;
3
+ /**
4
+ * Fetches a file for the model from a URL no channel connector owns, with the AI SDK default
5
+ * downloader's protections: only http(s) URLs on public hosts (each redirect is checked too), and a
6
+ * size cap.
7
+ */
8
+ export async function fetchPublicFile(url, maxBytes = MAX_MODEL_FILE_BYTES) {
9
+ let current = url;
10
+ for (let redirects = 0;; redirects++) {
11
+ assertPublicUrl(current);
12
+ const res = await fetch(current, { redirect: "manual" });
13
+ const location = res.headers.get("location");
14
+ if (res.status >= 300 && res.status < 400 && location) {
15
+ await res.body?.cancel();
16
+ if (redirects >= MAX_REDIRECTS) {
17
+ throw new Error(`Failed to download ${url.href}: too many redirects`);
18
+ }
19
+ current = new URL(location, current);
20
+ continue;
21
+ }
22
+ if (!res.ok) {
23
+ throw new Error(`Failed to download ${current.href}: ${res.status} ${res.statusText}`);
24
+ }
25
+ return {
26
+ data: await readWithLimit(res, current, maxBytes),
27
+ mediaType: res.headers.get("content-type") ?? undefined,
28
+ };
29
+ }
30
+ }
31
+ async function readWithLimit(res, url, maxBytes) {
32
+ const declared = Number(res.headers.get("content-length") ?? 0);
33
+ if (declared > maxBytes) {
34
+ await res.body?.cancel();
35
+ throw new Error(`Failed to download ${url.href}: larger than ${maxBytes} bytes`);
36
+ }
37
+ if (!res.body)
38
+ return new Uint8Array(await res.arrayBuffer());
39
+ const reader = res.body.getReader();
40
+ const chunks = [];
41
+ let total = 0;
42
+ for (;;) {
43
+ const { done, value } = await reader.read();
44
+ if (done)
45
+ break;
46
+ total += value.byteLength;
47
+ if (total > maxBytes) {
48
+ await reader.cancel();
49
+ throw new Error(`Failed to download ${url.href}: larger than ${maxBytes} bytes`);
50
+ }
51
+ chunks.push(value);
52
+ }
53
+ const data = new Uint8Array(total);
54
+ let offset = 0;
55
+ for (const chunk of chunks) {
56
+ data.set(chunk, offset);
57
+ offset += chunk.byteLength;
58
+ }
59
+ return data;
60
+ }
61
+ function assertPublicUrl(url) {
62
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
63
+ throw new Error(`Refusing to download ${url.href}: only http and https URLs are fetched`);
64
+ }
65
+ const hostname = url.hostname.toLowerCase().replace(/\.+$/, "");
66
+ const ipv6 = hostname.startsWith("[") && hostname.endsWith("]") ? hostname.slice(1, -1) : undefined;
67
+ const internal = !hostname ||
68
+ hostname === "localhost" ||
69
+ hostname.endsWith(".localhost") ||
70
+ hostname.endsWith(".local") ||
71
+ (ipv6 !== undefined ? isInternalIPv6(ipv6) : isIPv4(hostname) && isInternalIPv4(hostname));
72
+ if (internal) {
73
+ throw new Error(`Refusing to download ${url.href}: the host is not a public address`);
74
+ }
75
+ }
76
+ function isIPv4(host) {
77
+ const parts = host.split(".");
78
+ return (parts.length === 4 &&
79
+ parts.every((part) => {
80
+ const n = Number(part);
81
+ return Number.isInteger(n) && n >= 0 && n <= 255 && String(n) === part;
82
+ }));
83
+ }
84
+ function isInternalIPv4(ip) {
85
+ const [a = 0, b = 0, c = 0] = ip.split(".").map(Number);
86
+ return (a === 0 ||
87
+ a === 10 ||
88
+ (a === 100 && b >= 64 && b <= 127) ||
89
+ a === 127 ||
90
+ (a === 169 && b === 254) ||
91
+ (a === 172 && b >= 16 && b <= 31) ||
92
+ (a === 192 && b === 0 && c === 0) ||
93
+ (a === 192 && b === 168) ||
94
+ (a === 198 && (b === 18 || b === 19)) ||
95
+ a >= 240);
96
+ }
97
+ function parseIPv6(ip) {
98
+ const address = ip.toLowerCase().split("%")[0];
99
+ const halves = address.split("::");
100
+ if (halves.length > 2)
101
+ return null;
102
+ const toGroups = (segment) => {
103
+ if (segment === "")
104
+ return [];
105
+ const groups = [];
106
+ const parts = segment.split(":");
107
+ for (let i = 0; i < parts.length; i++) {
108
+ const part = parts[i];
109
+ if (part.includes(".")) {
110
+ if (i !== parts.length - 1 || !isIPv4(part))
111
+ return null;
112
+ const [a = 0, b = 0, c = 0, d = 0] = part.split(".").map(Number);
113
+ groups.push((a << 8) | b, (c << 8) | d);
114
+ continue;
115
+ }
116
+ if (!/^[0-9a-f]{1,4}$/.test(part))
117
+ return null;
118
+ groups.push(parseInt(part, 16));
119
+ }
120
+ return groups;
121
+ };
122
+ const head = toGroups(halves[0]);
123
+ if (head === null)
124
+ return null;
125
+ if (halves.length === 1)
126
+ return head.length === 8 ? head : null;
127
+ const tail = toGroups(halves[1]);
128
+ if (tail === null)
129
+ return null;
130
+ const fill = 8 - head.length - tail.length;
131
+ if (fill < 0)
132
+ return null;
133
+ return [...head, ...new Array(fill).fill(0), ...tail];
134
+ }
135
+ function isInternalIPv6(ip) {
136
+ const g = parseIPv6(ip);
137
+ if (g === null)
138
+ return true;
139
+ const zero = (count) => g.slice(0, count).every((group) => group === 0);
140
+ if (zero(7) && (g[7] === 0 || g[7] === 1))
141
+ return true;
142
+ const first = g[0];
143
+ if ((first & 0xfe00) === 0xfc00)
144
+ return true;
145
+ if ((first & 0xffc0) === 0xfe80)
146
+ return true;
147
+ if ((first & 0xffc0) === 0xfec0)
148
+ return true;
149
+ if ((first & 0xff00) === 0xff00)
150
+ return true;
151
+ const embedsIPv4 = zero(6) ||
152
+ (zero(5) && g[5] === 0xffff) ||
153
+ (zero(4) && g[4] === 0xffff && g[5] === 0) ||
154
+ (first === 0x64 && g[1] === 0xff9b && g[2] === 0 && g[3] === 0 && g[4] === 0 && g[5] === 0) ||
155
+ (first === 0x64 && g[1] === 0xff9b && g[2] === 1);
156
+ if (!embedsIPv4)
157
+ return false;
158
+ const v4 = [g[6] >> 8, g[6] & 0xff, g[7] >> 8, g[7] & 0xff].join(".");
159
+ return isInternalIPv4(v4);
160
+ }
161
+ //# sourceMappingURL=modelFileDownload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelFileDownload.js","sourceRoot":"","sources":["../../../src/v3/modelFileDownload.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AnyRetrieveRunResult, AnyRunShape, ApiRequestOptions, CreateBulkCancelActionOptions, CreateBulkReplayActionOptions, InferRunTypes, ListBulkActionsQueryParams, ListProjectRunsQueryParams, ListRunsQueryParams, RescheduleRunRequestBody, RetrieveRunResult, RunShape, RealtimeRun, AnyRealtimeRun, RunSubscription, TaskRunShape, AnyBatchedRunHandle, AsyncIterableStream, ApiPromise, RealtimeRunSkipColumns, AbortBulkActionResponseBody, BulkActionObject, CanceledRunResponse, CreateBulkActionResponseBody, CursorPagePromise, ListRunResponseItem, ReplayRunResponse, RetrieveRunResponse } from "@trigger.dev/core/v3";
1
+ import type { AnyRetrieveRunResult, AnyRunShape, ApiRequestOptions, CreateBulkCancelActionOptions, CreateBulkReplayActionOptions, InferRunTypes, ListBulkActionsQueryParams, ListProjectRunsQueryParams, ListRunsQueryParams, RescheduleRunRequestBody, RetrieveRunResult, RunShape, RealtimeRun, AnyRealtimeRun, RunSubscription, TaskRunShape, AnyBatchedRunHandle, AsyncIterableStream, ApiPromise, RealtimeRunSkipColumns, AbortBulkActionResponseBody, BulkActionObject, CanceledRunResponse, CreateBulkActionResponseBody, CursorPagePromise, IdempotencyKey, ListRunResponseItem, ReplayRunResponse, RetrieveRunResponse, TriggerOptions } from "@trigger.dev/core/v3";
2
2
  import type { AnyRunHandle, AnyTask } from "./shared.js";
3
3
  export type { AnyRetrieveRunResult, AnyRunShape, RetrieveRunResult, RunShape, TaskRunShape, RealtimeRun, AnyRealtimeRun, };
4
4
  export declare const runs: {
@@ -26,6 +26,27 @@ declare function listRuns(projectRef: string, params?: ListProjectRunsQueryParam
26
26
  declare function listRuns(params?: ListRunsQueryParams, requestOptions?: ApiRequestOptions): CursorPagePromise<typeof ListRunResponseItem>;
27
27
  type RunId<TRunId> = TRunId extends AnyRunHandle | AnyBatchedRunHandle ? TRunId : TRunId extends AnyTask ? string : TRunId extends string ? TRunId : never;
28
28
  declare function retrieveRun<TRunId extends AnyRunHandle | AnyBatchedRunHandle | AnyTask | string>(runId: RunId<TRunId>, requestOptions?: ApiRequestOptions): ApiPromise<RetrieveRunResult<TRunId>>;
29
+ export type ReplayRunOptions = Pick<TriggerOptions, "metadata" | "tags" | "queue" | "concurrencyKey" | "machine" | "version" | "region" | "delay" | "ttl" | "idempotencyKeyTTL" | "maxAttempts" | "maxDuration" | "priority"> & {
30
+ /**
31
+ * The payload for the new run. Omit it to reuse the original run's payload.
32
+ */
33
+ payload?: unknown;
34
+ /**
35
+ * An idempotency key for the new run. A plain string is used as-is: unlike `trigger()`, it is
36
+ * not scoped to the current run. Use `idempotencyKeys.create()` for a scoped key.
37
+ */
38
+ idempotencyKey?: IdempotencyKey | string;
39
+ };
40
+ /**
41
+ * Replays a run: creates a new run of the same task from the original run's payload and options.
42
+ * Pass `options` to override any of them for the new run.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const { id } = await runs.replay("run_1234", { payload: { userId: "123" }, delay: "1h" });
47
+ * ```
48
+ */
49
+ declare function replayRun(runId: string, options?: ReplayRunOptions, requestOptions?: ApiRequestOptions): ApiPromise<ReplayRunResponse>;
29
50
  declare function replayRun(runId: string, requestOptions?: ApiRequestOptions): ApiPromise<ReplayRunResponse>;
30
51
  declare function cancelRun(runId: string, requestOptions?: ApiRequestOptions): ApiPromise<CanceledRunResponse>;
31
52
  declare function bulkCancelRuns(options: CreateBulkCancelActionOptions, requestOptions?: ApiRequestOptions): ApiPromise<CreateBulkActionResponseBody>;
@@ -126,8 +126,11 @@ async function resolvePayloadAndOutputUrls(run) {
126
126
  }
127
127
  return resolvedRun;
128
128
  }
129
- function replayRun(runId, requestOptions) {
129
+ function replayRun(runId, optionsOrRequestOptions, requestOptions) {
130
130
  const apiClient = apiClientManager.clientOrThrow();
131
+ const options = isRequestOptions(optionsOrRequestOptions)
132
+ ? undefined
133
+ : optionsOrRequestOptions;
131
134
  const $requestOptions = mergeRequestOptions({
132
135
  tracer,
133
136
  name: "runs.replay()",
@@ -144,8 +147,8 @@ function replayRun(runId, requestOptions) {
144
147
  style: "codepath",
145
148
  }),
146
149
  },
147
- }, requestOptions);
148
- return apiClient.replayRun(runId, $requestOptions);
150
+ }, isRequestOptions(optionsOrRequestOptions) ? optionsOrRequestOptions : requestOptions);
151
+ return apiClient.replayRun(runId, options, $requestOptions);
149
152
  }
150
153
  function cancelRun(runId, requestOptions) {
151
154
  const apiClient = apiClientManager.clientOrThrow();
@@ -1 +1 @@
1
- {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../../src/v3/runs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../../src/v3/runs.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import "./setup-catalog.js";
2
- export { mockChatAgent, type MockChatAgentOptions, type MockChatAgentHarness, type MockChatAgentTurn, } from "./mock-chat-agent.js";
2
+ export { mockChatAgent, DEFAULT_TEST_CONNECTOR_ID, type MockChatAgentOptions, type MockChatAgentHarness, type MockChatAgentTurn, type SeededChannelDelivery, } from "./mock-chat-agent.js";
3
3
  export { runTranscriptStorageTests, type TranscriptStorageTestOptions, } from "./transcript-storage-tests.js";
4
+ export { recordingChannelConnector, type RecordingChannelConnector, type RecordingChannelConnectorOptions, type RecordedSend, type RecordedReaction, type RecordedFinalize, type RecordedLifecycle, type RecordedReplyStream, type RecordedCancel, type TestChannelEvent, type TestChannelHandle, } from "./mock-channel-connector.js";
4
5
  export { runInMockTaskContext, type MockTaskContextDrivers, type MockTaskContextOptions, } from "@trigger.dev/core/v3/test";
@@ -5,8 +5,9 @@
5
5
  // Users should import `@trigger.dev/sdk/ai/test` BEFORE their agent
6
6
  // modules so the registration side-effect runs first.
7
7
  import "./setup-catalog.js";
8
- export { mockChatAgent, } from "./mock-chat-agent.js";
8
+ export { mockChatAgent, DEFAULT_TEST_CONNECTOR_ID, } from "./mock-chat-agent.js";
9
9
  export { runTranscriptStorageTests, } from "./transcript-storage-tests.js";
10
+ export { recordingChannelConnector, } from "./mock-channel-connector.js";
10
11
  // Re-export the lower-level task context harness so consumers can build
11
12
  // their own test helpers without adding a separate `@trigger.dev/core`
12
13
  // dependency to their reference projects.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/test/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,oEAAoE;AACpE,kDAAkD;AAClD,EAAE;AACF,oEAAoE;AACpE,sDAAsD;AACtD,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,GAId,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,GAE1B,MAAM,+BAA+B,CAAC;AAEvC,wEAAwE;AACxE,uEAAuE;AACvE,0CAA0C;AAC1C,OAAO,EACL,oBAAoB,GAGrB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/test/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,oEAAoE;AACpE,kDAAkD;AAClD,EAAE;AACF,oEAAoE;AACpE,sDAAsD;AACtD,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,yBAAyB,GAK1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,yBAAyB,GAE1B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,yBAAyB,GAW1B,MAAM,6BAA6B,CAAC;AAErC,wEAAwE;AACxE,uEAAuE;AACvE,0CAA0C;AAC1C,OAAO,EACL,oBAAoB,GAGrB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,172 @@
1
+ import type { ChannelAckCtx, ChannelCancelledToolCall, ChannelDownloadedFile, ChannelConnector, ChannelControl, ChannelInbound, ChannelInteractionCtx, ChannelInteractionResolution, ChannelLifecycleCtx, ChannelLifecycleState, ChannelMessage, ChannelPendingToolCall, ChannelProgressEvent, ChannelReaction, ChannelReactions, ChannelReply, ChannelReplyStreamEnd, ChannelSeedMessage, ChannelSendCtx, ChannelTurnCtx } from "../ai.js";
2
+ /** The default event shape {@link recordingChannelConnector} maps when no `inbound` is given. */
3
+ export type TestChannelEvent = {
4
+ text: string;
5
+ threadId?: string;
6
+ userId?: string;
7
+ };
8
+ /** The posting handle the default `bind` derives: the event's `threadId`. */
9
+ export type TestChannelHandle = {
10
+ threadId: string;
11
+ };
12
+ /** A single `send()` call captured by {@link recordingChannelConnector}. */
13
+ export type RecordedSend<TEvent = unknown> = {
14
+ /** The channel message the connector was asked to post (or edit into place). */
15
+ message: ChannelMessage;
16
+ /** The egress context: `final`, `mode`, `previousRef`, the raw `event`, `deliveryId`. */
17
+ ctx: ChannelSendCtx<TEvent>;
18
+ /** The ref this send resolved to (echoes `previousRef` on an edit, else a fresh id). */
19
+ ref: string;
20
+ };
21
+ /** A reaction applied to the triggering message, captured by {@link recordingChannelConnector}. */
22
+ export type RecordedReaction<TEvent = unknown> = {
23
+ reaction: ChannelReaction;
24
+ event: TEvent;
25
+ };
26
+ /** A `progress()` call, captured by {@link recordingChannelConnector}. */
27
+ type RecordedProgress<TEvent = unknown> = {
28
+ event: ChannelProgressEvent;
29
+ ctx: ChannelTurnCtx<TEvent>;
30
+ };
31
+ /** A `lifecycle()` report, captured by {@link recordingChannelConnector}. */
32
+ export type RecordedLifecycle<TEvent = unknown> = {
33
+ state: ChannelLifecycleState;
34
+ ctx: ChannelLifecycleCtx<TEvent>;
35
+ };
36
+ /** One turn's native reply stream (`stream: true`), captured by {@link recordingChannelConnector}. */
37
+ export type RecordedReplyStream<TEvent = unknown> = {
38
+ ctx: ChannelTurnCtx<TEvent>;
39
+ /** Every text delta, in order. */
40
+ deltas: string[];
41
+ progress: ChannelProgressEvent[];
42
+ /** How the runtime ended the stream; unset while the turn runs. */
43
+ ended?: ChannelReplyStreamEnd;
44
+ /** How many times `end()` was called (the runtime ends each stream once). */
45
+ endCalls: number;
46
+ };
47
+ /** A HITL `cancelInteraction()` call, captured by {@link recordingChannelConnector}. */
48
+ export type RecordedCancel<TEvent = unknown> = {
49
+ cancelled: ChannelCancelledToolCall[];
50
+ ctx: ChannelTurnCtx<TEvent>;
51
+ };
52
+ /** A HITL `finalizeInteraction()` call, captured by {@link recordingChannelConnector}. */
53
+ export type RecordedFinalize<TEvent = unknown> = {
54
+ event: TEvent;
55
+ resolution: ChannelInteractionResolution;
56
+ };
57
+ /**
58
+ * A real {@link ChannelConnector} whose egress hooks record what they were
59
+ * asked to do instead of touching a network, so a test can assert the channel
60
+ * round-trip a `chat.agent` turn produced. Built through the real
61
+ * `chat.channels.custom` factory, so it is a genuinely-shaped connector; only
62
+ * `send` / `ack` / `react` / `finalizeInteraction` are swapped for recorders.
63
+ */
64
+ export type RecordingChannelConnector<TEvent = unknown> = ChannelConnector<TEvent> & {
65
+ /** Every `send()` call in order: the ack, any stream edits, and the final reply. */
66
+ readonly sent: ReadonlyArray<RecordedSend<TEvent>>;
67
+ /** Turn-start placeholder posts ("final" delivery): `final: false`, no `previousRef`. */
68
+ readonly acks: ReadonlyArray<RecordedSend<TEvent>>;
69
+ /** Stream-mode intermediate edits: `mode: "stream"`, `final: false`, with `previousRef`. */
70
+ readonly edits: ReadonlyArray<RecordedSend<TEvent>>;
71
+ /** Every reaction applied to the triggering message (lifecycle + `run().channel`). */
72
+ readonly reactionsApplied: ReadonlyArray<RecordedReaction<TEvent>>;
73
+ /** Every HITL `finalizeInteraction()` call. */
74
+ readonly finalized: ReadonlyArray<RecordedFinalize<TEvent>>;
75
+ /** Every `seed()` call's triggering event, in order. */
76
+ readonly seeded: ReadonlyArray<TEvent>;
77
+ /** Every `progress()` call (tool calls and results the turn streamed), in order. */
78
+ readonly progressed: ReadonlyArray<RecordedProgress<TEvent>>;
79
+ /** Every `lifecycle()` report, in order (`lifecycle: true`). */
80
+ readonly lifecycles: ReadonlyArray<RecordedLifecycle<TEvent>>;
81
+ /** Every native reply stream the runtime opened, one per turn (`stream: true`). */
82
+ readonly streams: ReadonlyArray<RecordedReplyStream<TEvent>>;
83
+ /** Every `cancelInteraction()` call. */
84
+ readonly cancelled: ReadonlyArray<RecordedCancel<TEvent>>;
85
+ /** Every `endInterruptedStream()` call: the ref of a stream a dead worker left open. */
86
+ readonly interrupted: ReadonlyArray<{
87
+ ref: string;
88
+ ctx: ChannelTurnCtx<TEvent>;
89
+ }>;
90
+ /** The ref of the most recent `send()`, i.e. the current edit target. */
91
+ readonly lastRef: string | undefined;
92
+ /** Text of the final reply (`final: true`), or `undefined` if none posted yet. */
93
+ finalText(): string | undefined;
94
+ };
95
+ /** Options for {@link recordingChannelConnector}. */
96
+ export type RecordingChannelConnectorOptions<TEvent = TestChannelEvent> = {
97
+ /** Connector id. Defaults to {@link DEFAULT_TEST_CONNECTOR_ID} so it lines up with `sendChannelEvent`. */
98
+ id?: string;
99
+ /** The endpoint id the connector subscribes to. Server-side routing only; defaults to `"test-channel"`. */
100
+ endpointId?: string;
101
+ /** `"final"` (default: ack then edit-to-answer) or `"stream"` (debounced live edits). */
102
+ delivery?: "final" | "stream";
103
+ /** Session key template. Unused in-run (server-side routing only); defaults to `"{event.threadId}"`. */
104
+ key?: string;
105
+ /** Map the raw event to the turn's message. Defaults to `event.text`, attributed to `event.userId`. */
106
+ inbound?: (event: TEvent) => ChannelInbound;
107
+ /** Map the reply to the posted message. Defaults to `{ text }`; receives the full {@link ChannelReply}. */
108
+ outbound?: (reply: ChannelReply) => ChannelMessage | null;
109
+ /**
110
+ * Derive the session's posting handle from an event, so turns that no channel delivery started
111
+ * (an action turn, a browser message) still egress through this connector with `ctx.handle` and
112
+ * `ctx.bound: true`. Defaults to `{ threadId: event.threadId }`; pass `null` to make the
113
+ * connector unbindable.
114
+ */
115
+ bind?: ((event: TEvent) => unknown | null) | null;
116
+ /** Prior surface messages to seed a new session with (what `seed()` returns). Recorded per call. */
117
+ seed?: (event: TEvent) => Promise<ChannelSeedMessage[]> | ChannelSeedMessage[];
118
+ /**
119
+ * Placeholder posted at turn start ("final" delivery). Defaults to `{ text: "..." }`.
120
+ * Pass `null` (or a function returning `null`) to post no ack, so the final reply
121
+ * arrives as a fresh message instead of an edit.
122
+ */
123
+ ack?: ChannelMessage | null | ((event: TEvent, ctx: ChannelAckCtx) => ChannelMessage | null);
124
+ /** HITL: map a verified callback event to a tool resolution (null => treat as a normal message). */
125
+ onInteraction?: (event: TEvent) => ChannelInteractionResolution | null;
126
+ /** Fetch a file URL the connector owns for the model; null for URLs it does not own. */
127
+ download?: (url: URL, ctx: {
128
+ handle?: unknown;
129
+ }) => Promise<ChannelDownloadedFile | null>;
130
+ /** Map a click on an agent-posted control to an action for `onAction` (null for anything else). */
131
+ toAction?: (event: TEvent) => unknown | null;
132
+ /** Acknowledge a message that arrives while a turn is running. */
133
+ received?: (ctx: ChannelTurnCtx<TEvent>) => Promise<void> | void;
134
+ /** HITL: map the pending tool call(s) to the controls posted in the thread. */
135
+ renderInteraction?: (pending: ChannelPendingToolCall[], ctx: ChannelInteractionCtx<TEvent>) => ChannelMessage | null;
136
+ /** Lifecycle reaction choices (working/done/error). Requires nothing extra; `react` is always recorded. */
137
+ reactions?: ChannelReactions<TEvent>;
138
+ /** Record tool-call progress (`progress()` hook). Off by default so existing turns post nothing extra. */
139
+ progress?: boolean;
140
+ /** Provider helpers merged into `run({ channel })`. */
141
+ surface?: (ctx: ChannelTurnCtx<TEvent>) => Record<string, unknown>;
142
+ /** Map an event to a control (`{ kind: "stop" }`) while a turn runs. */
143
+ onControl?: (event: TEvent) => ChannelControl | null;
144
+ /** Record `lifecycle()` reports. Off by default. */
145
+ lifecycle?: boolean;
146
+ /**
147
+ * Stream replies natively (`delivery: "stream"` with a recording `stream()` hook): each turn's
148
+ * deltas and end outcome land in `streams`, the stream reports `opened("stream_<n>")` on its
149
+ * first delta, and it reports delivered when it saw text. `{ delivered: false }` reports every
150
+ * stream undelivered, like a Slack stream whose fallback post of the rest of the reply failed.
151
+ */
152
+ stream?: boolean | {
153
+ delivered: false;
154
+ };
155
+ };
156
+ /**
157
+ * Create a {@link RecordingChannelConnector} for driving a `chat.agent`
158
+ * channel turn offline. Pair it with `mockChatAgent(...).sendChannelEvent(...)`:
159
+ * list the connector on the agent's `channels`, deliver an event, then assert
160
+ * against `connector.sent` / `.acks` / `.edits` / `.finalText()`.
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * const channel = recordingChannelConnector();
165
+ * const agent = chat.agent({ id: "support", channels: [channel], run: ... });
166
+ * const harness = mockChatAgent(agent);
167
+ * await harness.sendChannelEvent({ event: { text: "hi", threadId: "t1" } });
168
+ * expect(channel.finalText()).toBe("hello");
169
+ * ```
170
+ */
171
+ export declare function recordingChannelConnector<TEvent = TestChannelEvent>(options?: RecordingChannelConnectorOptions<TEvent>): RecordingChannelConnector<TEvent>;
172
+ export {};
@@ -0,0 +1,170 @@
1
+ import { chat } from "../ai.js";
2
+ import { DEFAULT_TEST_CONNECTOR_ID } from "./mock-chat-agent.js";
3
+ const DEFAULT_TEST_ENDPOINT_ID = "test-channel";
4
+ /**
5
+ * Create a {@link RecordingChannelConnector} for driving a `chat.agent`
6
+ * channel turn offline. Pair it with `mockChatAgent(...).sendChannelEvent(...)`:
7
+ * list the connector on the agent's `channels`, deliver an event, then assert
8
+ * against `connector.sent` / `.acks` / `.edits` / `.finalText()`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const channel = recordingChannelConnector();
13
+ * const agent = chat.agent({ id: "support", channels: [channel], run: ... });
14
+ * const harness = mockChatAgent(agent);
15
+ * await harness.sendChannelEvent({ event: { text: "hi", threadId: "t1" } });
16
+ * expect(channel.finalText()).toBe("hello");
17
+ * ```
18
+ */
19
+ export function recordingChannelConnector(options = {}) {
20
+ const sent = [];
21
+ const reactionsApplied = [];
22
+ const finalized = [];
23
+ const seeded = [];
24
+ const progressed = [];
25
+ const lifecycles = [];
26
+ const streams = [];
27
+ const cancelled = [];
28
+ const interrupted = [];
29
+ let refCounter = 0;
30
+ let lastRef;
31
+ const inbound = options.inbound ??
32
+ ((event) => {
33
+ const e = event;
34
+ return { message: e?.text ?? "", externalUserId: e?.userId };
35
+ });
36
+ const bind = options.bind === null
37
+ ? undefined
38
+ : (options.bind ??
39
+ ((event) => {
40
+ const threadId = event?.threadId;
41
+ return threadId ? { threadId } : null;
42
+ }));
43
+ const ackFn = options.ack === undefined
44
+ ? () => ({ text: "..." })
45
+ : typeof options.ack === "function"
46
+ ? options.ack
47
+ : () => options.ack;
48
+ const send = async (message, ctx) => {
49
+ const ref = ctx.previousRef ?? `ref_${++refCounter}`;
50
+ sent.push({ message, ctx, ref });
51
+ lastRef = ref;
52
+ return { ref };
53
+ };
54
+ const react = async (reaction, ctx) => {
55
+ reactionsApplied.push({ reaction, event: ctx.event });
56
+ };
57
+ const finalizeInteraction = async (event, resolution) => {
58
+ finalized.push({ event, resolution });
59
+ };
60
+ const connector = chat.channels.custom({
61
+ id: options.id ?? DEFAULT_TEST_CONNECTOR_ID,
62
+ endpoint: {
63
+ id: options.endpointId ?? DEFAULT_TEST_ENDPOINT_ID,
64
+ source: "custom",
65
+ },
66
+ key: (options.key ?? "{event.threadId}"),
67
+ inbound: inbound,
68
+ ...(bind ? { bind: bind } : {}),
69
+ ...(options.seed
70
+ ? {
71
+ seed: (async (event) => {
72
+ seeded.push(event);
73
+ return options.seed(event);
74
+ }),
75
+ }
76
+ : {}),
77
+ ack: ackFn,
78
+ ...(options.outbound ? { outbound: options.outbound } : {}),
79
+ send: send,
80
+ react: react,
81
+ finalizeInteraction: finalizeInteraction,
82
+ ...(options.onInteraction ? { onInteraction: options.onInteraction } : {}),
83
+ ...(options.download ? { download: options.download } : {}),
84
+ ...(options.toAction ? { toAction: options.toAction } : {}),
85
+ ...(options.received ? { received: options.received } : {}),
86
+ ...(options.renderInteraction ? { renderInteraction: options.renderInteraction } : {}),
87
+ ...(options.reactions ? { reactions: options.reactions } : {}),
88
+ ...(options.progress
89
+ ? {
90
+ progress: ((event, ctx) => {
91
+ progressed.push({ event, ctx });
92
+ }),
93
+ }
94
+ : {}),
95
+ ...(options.surface ? { surface: options.surface } : {}),
96
+ ...(options.onControl ? { onControl: options.onControl } : {}),
97
+ ...(options.lifecycle
98
+ ? {
99
+ lifecycle: ((state, ctx) => {
100
+ lifecycles.push({ state, ctx });
101
+ }),
102
+ }
103
+ : {}),
104
+ ...(options.stream
105
+ ? {
106
+ stream: ((ctx) => {
107
+ const recorded = {
108
+ ctx,
109
+ deltas: [],
110
+ progress: [],
111
+ endCalls: 0,
112
+ };
113
+ streams.push(recorded);
114
+ return {
115
+ text: (delta) => {
116
+ if (recorded.deltas.length === 0)
117
+ ctx.opened(`stream_${streams.length}`);
118
+ recorded.deltas.push(delta);
119
+ },
120
+ progress: (event) => {
121
+ recorded.progress.push(event);
122
+ },
123
+ end: async (outcome) => {
124
+ recorded.endCalls += 1;
125
+ recorded.ended = outcome;
126
+ const undelivered = typeof options.stream === "object" && options.stream.delivered === false;
127
+ return { delivered: !undelivered && recorded.deltas.join("").length > 0 };
128
+ },
129
+ };
130
+ }),
131
+ }
132
+ : {}),
133
+ endInterruptedStream: ((ref, ctx) => {
134
+ interrupted.push({ ref, ctx });
135
+ }),
136
+ cancelInteraction: ((cancelledCalls, ctx) => {
137
+ cancelled.push({ cancelled: cancelledCalls, ctx });
138
+ }),
139
+ delivery: options.delivery ?? (options.stream ? "stream" : "final"),
140
+ });
141
+ Object.defineProperties(connector, {
142
+ sent: { get: () => sent, enumerable: true },
143
+ reactionsApplied: { get: () => reactionsApplied, enumerable: true },
144
+ finalized: { get: () => finalized, enumerable: true },
145
+ seeded: { get: () => seeded, enumerable: true },
146
+ progressed: { get: () => progressed, enumerable: true },
147
+ lifecycles: { get: () => lifecycles, enumerable: true },
148
+ streams: { get: () => streams, enumerable: true },
149
+ cancelled: { get: () => cancelled, enumerable: true },
150
+ interrupted: { get: () => interrupted, enumerable: true },
151
+ lastRef: { get: () => lastRef, enumerable: true },
152
+ acks: {
153
+ get: () => sent.filter((s) => s.ctx.final === false && s.ctx.previousRef === undefined),
154
+ enumerable: true,
155
+ },
156
+ edits: {
157
+ get: () => sent.filter((s) => s.ctx.mode === "stream" && s.ctx.final === false && s.ctx.previousRef !== undefined),
158
+ enumerable: true,
159
+ },
160
+ });
161
+ connector.finalText = () => {
162
+ for (let i = sent.length - 1; i >= 0; i--) {
163
+ if (sent[i].ctx.final)
164
+ return sent[i].message.text;
165
+ }
166
+ return undefined;
167
+ };
168
+ return connector;
169
+ }
170
+ //# sourceMappingURL=mock-channel-connector.js.map