@trigger.dev/core 0.0.0-prerelease-20251007140052 → 0.0.0-prerelease-20251113143926

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 (195) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +106 -8
  2. package/dist/commonjs/v3/apiClient/index.js +75 -4
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/runStream.d.ts +28 -14
  5. package/dist/commonjs/v3/apiClient/runStream.js +175 -58
  6. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  7. package/dist/commonjs/v3/apiClientManager/index.d.ts +1 -1
  8. package/dist/commonjs/v3/apiClientManager/index.js +11 -4
  9. package/dist/commonjs/v3/apiClientManager/index.js.map +1 -1
  10. package/dist/commonjs/v3/apiClientManager/types.d.ts +2 -1
  11. package/dist/commonjs/v3/errors.d.ts +5 -0
  12. package/dist/commonjs/v3/errors.js +12 -1
  13. package/dist/commonjs/v3/errors.js.map +1 -1
  14. package/dist/commonjs/v3/index.d.ts +1 -0
  15. package/dist/commonjs/v3/index.js +1 -0
  16. package/dist/commonjs/v3/index.js.map +1 -1
  17. package/dist/commonjs/v3/realtime-streams-api.d.ts +3 -0
  18. package/dist/commonjs/v3/realtime-streams-api.js +23 -0
  19. package/dist/commonjs/v3/realtime-streams-api.js.map +1 -0
  20. package/dist/commonjs/v3/realtimeStreams/index.d.ts +10 -0
  21. package/dist/commonjs/v3/realtimeStreams/index.js +31 -0
  22. package/dist/commonjs/v3/realtimeStreams/index.js.map +1 -0
  23. package/dist/commonjs/v3/realtimeStreams/manager.d.ts +14 -0
  24. package/dist/commonjs/v3/realtimeStreams/manager.js +128 -0
  25. package/dist/commonjs/v3/realtimeStreams/manager.js.map +1 -0
  26. package/dist/commonjs/v3/realtimeStreams/noopManager.d.ts +5 -0
  27. package/dist/commonjs/v3/realtimeStreams/noopManager.js +17 -0
  28. package/dist/commonjs/v3/realtimeStreams/noopManager.js.map +1 -0
  29. package/dist/commonjs/v3/realtimeStreams/streamInstance.d.ts +23 -0
  30. package/dist/commonjs/v3/realtimeStreams/streamInstance.js +106 -0
  31. package/dist/commonjs/v3/realtimeStreams/streamInstance.js.map +1 -0
  32. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.d.ts +49 -0
  33. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js +382 -0
  34. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js.map +1 -0
  35. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.d.ts +60 -0
  36. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js +179 -0
  37. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js.map +1 -0
  38. package/dist/commonjs/v3/realtimeStreams/types.d.ts +119 -0
  39. package/dist/commonjs/v3/realtimeStreams/types.js +3 -0
  40. package/dist/commonjs/v3/realtimeStreams/types.js.map +1 -0
  41. package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +1 -0
  42. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +7 -0
  43. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +1 -0
  44. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +7 -0
  45. package/dist/commonjs/v3/runMetadata/manager.d.ts +3 -8
  46. package/dist/commonjs/v3/runMetadata/manager.js +14 -79
  47. package/dist/commonjs/v3/runMetadata/manager.js.map +1 -1
  48. package/dist/commonjs/v3/schemas/api.d.ts +69 -25
  49. package/dist/commonjs/v3/schemas/api.js +24 -6
  50. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  51. package/dist/commonjs/v3/schemas/common.d.ts +5 -0
  52. package/dist/commonjs/v3/schemas/common.js +1 -0
  53. package/dist/commonjs/v3/schemas/common.js.map +1 -1
  54. package/dist/commonjs/v3/schemas/messages.d.ts +50 -0
  55. package/dist/commonjs/v3/schemas/messages.js +7 -0
  56. package/dist/commonjs/v3/schemas/messages.js.map +1 -1
  57. package/dist/commonjs/v3/schemas/queues.d.ts +41 -2
  58. package/dist/commonjs/v3/schemas/queues.js +17 -2
  59. package/dist/commonjs/v3/schemas/queues.js.map +1 -1
  60. package/dist/commonjs/v3/schemas/runEngine.d.ts +7 -0
  61. package/dist/commonjs/v3/schemas/schemas.d.ts +7 -0
  62. package/dist/commonjs/v3/semanticInternalAttributes.d.ts +1 -0
  63. package/dist/commonjs/v3/semanticInternalAttributes.js +1 -0
  64. package/dist/commonjs/v3/semanticInternalAttributes.js.map +1 -1
  65. package/dist/commonjs/v3/streams/asyncIterableStream.d.ts +2 -0
  66. package/dist/commonjs/v3/streams/asyncIterableStream.js +47 -0
  67. package/dist/commonjs/v3/streams/asyncIterableStream.js.map +1 -1
  68. package/dist/commonjs/v3/timeout/api.d.ts +1 -0
  69. package/dist/commonjs/v3/timeout/api.js +6 -0
  70. package/dist/commonjs/v3/timeout/api.js.map +1 -1
  71. package/dist/commonjs/v3/timeout/types.d.ts +1 -0
  72. package/dist/commonjs/v3/timeout/types.js.map +1 -1
  73. package/dist/commonjs/v3/timeout/usageTimeoutManager.d.ts +2 -0
  74. package/dist/commonjs/v3/timeout/usageTimeoutManager.js +10 -1
  75. package/dist/commonjs/v3/timeout/usageTimeoutManager.js.map +1 -1
  76. package/dist/commonjs/v3/types/tasks.d.ts +1 -1
  77. package/dist/commonjs/v3/utils/globals.d.ts +2 -0
  78. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  79. package/dist/commonjs/v3/waitUntil/index.d.ts +1 -1
  80. package/dist/commonjs/v3/waitUntil/index.js +3 -3
  81. package/dist/commonjs/v3/waitUntil/index.js.map +1 -1
  82. package/dist/commonjs/v3/waitUntil/manager.d.ts +3 -1
  83. package/dist/commonjs/v3/waitUntil/manager.js +7 -3
  84. package/dist/commonjs/v3/waitUntil/manager.js.map +1 -1
  85. package/dist/commonjs/v3/waitUntil/types.d.ts +2 -2
  86. package/dist/commonjs/v3/workers/index.d.ts +1 -0
  87. package/dist/commonjs/v3/workers/index.js +3 -1
  88. package/dist/commonjs/v3/workers/index.js.map +1 -1
  89. package/dist/commonjs/v3/workers/taskExecutor.js +4 -16
  90. package/dist/commonjs/v3/workers/taskExecutor.js.map +1 -1
  91. package/dist/commonjs/v3/workers/warmStartClient.d.ts +3 -0
  92. package/dist/commonjs/v3/workers/warmStartClient.js +67 -28
  93. package/dist/commonjs/v3/workers/warmStartClient.js.map +1 -1
  94. package/dist/commonjs/version.js +1 -1
  95. package/dist/esm/v3/apiClient/index.d.ts +106 -8
  96. package/dist/esm/v3/apiClient/index.js +76 -6
  97. package/dist/esm/v3/apiClient/index.js.map +1 -1
  98. package/dist/esm/v3/apiClient/runStream.d.ts +28 -14
  99. package/dist/esm/v3/apiClient/runStream.js +176 -58
  100. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  101. package/dist/esm/v3/apiClientManager/index.d.ts +1 -1
  102. package/dist/esm/v3/apiClientManager/index.js +11 -4
  103. package/dist/esm/v3/apiClientManager/index.js.map +1 -1
  104. package/dist/esm/v3/apiClientManager/types.d.ts +2 -1
  105. package/dist/esm/v3/errors.d.ts +5 -0
  106. package/dist/esm/v3/errors.js +10 -0
  107. package/dist/esm/v3/errors.js.map +1 -1
  108. package/dist/esm/v3/index.d.ts +1 -0
  109. package/dist/esm/v3/index.js +1 -0
  110. package/dist/esm/v3/index.js.map +1 -1
  111. package/dist/esm/v3/realtime-streams-api.d.ts +3 -0
  112. package/dist/esm/v3/realtime-streams-api.js +6 -0
  113. package/dist/esm/v3/realtime-streams-api.js.map +1 -0
  114. package/dist/esm/v3/realtimeStreams/index.d.ts +10 -0
  115. package/dist/esm/v3/realtimeStreams/index.js +27 -0
  116. package/dist/esm/v3/realtimeStreams/index.js.map +1 -0
  117. package/dist/esm/v3/realtimeStreams/manager.d.ts +14 -0
  118. package/dist/esm/v3/realtimeStreams/manager.js +124 -0
  119. package/dist/esm/v3/realtimeStreams/manager.js.map +1 -0
  120. package/dist/esm/v3/realtimeStreams/noopManager.d.ts +5 -0
  121. package/dist/esm/v3/realtimeStreams/noopManager.js +13 -0
  122. package/dist/esm/v3/realtimeStreams/noopManager.js.map +1 -0
  123. package/dist/esm/v3/realtimeStreams/streamInstance.d.ts +23 -0
  124. package/dist/esm/v3/realtimeStreams/streamInstance.js +102 -0
  125. package/dist/esm/v3/realtimeStreams/streamInstance.js.map +1 -0
  126. package/dist/esm/v3/realtimeStreams/streamsWriterV1.d.ts +49 -0
  127. package/dist/esm/v3/realtimeStreams/streamsWriterV1.js +378 -0
  128. package/dist/esm/v3/realtimeStreams/streamsWriterV1.js.map +1 -0
  129. package/dist/esm/v3/realtimeStreams/streamsWriterV2.d.ts +60 -0
  130. package/dist/esm/v3/realtimeStreams/streamsWriterV2.js +175 -0
  131. package/dist/esm/v3/realtimeStreams/streamsWriterV2.js.map +1 -0
  132. package/dist/esm/v3/realtimeStreams/types.d.ts +119 -0
  133. package/dist/esm/v3/realtimeStreams/types.js +2 -0
  134. package/dist/esm/v3/realtimeStreams/types.js.map +1 -0
  135. package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +1 -0
  136. package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +7 -0
  137. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +1 -0
  138. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +7 -0
  139. package/dist/esm/v3/runMetadata/manager.d.ts +3 -8
  140. package/dist/esm/v3/runMetadata/manager.js +14 -79
  141. package/dist/esm/v3/runMetadata/manager.js.map +1 -1
  142. package/dist/esm/v3/schemas/api.d.ts +69 -25
  143. package/dist/esm/v3/schemas/api.js +21 -3
  144. package/dist/esm/v3/schemas/api.js.map +1 -1
  145. package/dist/esm/v3/schemas/common.d.ts +5 -0
  146. package/dist/esm/v3/schemas/common.js +1 -0
  147. package/dist/esm/v3/schemas/common.js.map +1 -1
  148. package/dist/esm/v3/schemas/messages.d.ts +50 -0
  149. package/dist/esm/v3/schemas/messages.js +7 -0
  150. package/dist/esm/v3/schemas/messages.js.map +1 -1
  151. package/dist/esm/v3/schemas/queues.d.ts +41 -2
  152. package/dist/esm/v3/schemas/queues.js +17 -2
  153. package/dist/esm/v3/schemas/queues.js.map +1 -1
  154. package/dist/esm/v3/schemas/runEngine.d.ts +7 -0
  155. package/dist/esm/v3/schemas/schemas.d.ts +7 -0
  156. package/dist/esm/v3/semanticInternalAttributes.d.ts +1 -0
  157. package/dist/esm/v3/semanticInternalAttributes.js +1 -0
  158. package/dist/esm/v3/semanticInternalAttributes.js.map +1 -1
  159. package/dist/esm/v3/streams/asyncIterableStream.d.ts +2 -0
  160. package/dist/esm/v3/streams/asyncIterableStream.js +45 -0
  161. package/dist/esm/v3/streams/asyncIterableStream.js.map +1 -1
  162. package/dist/esm/v3/timeout/api.d.ts +1 -0
  163. package/dist/esm/v3/timeout/api.js +6 -0
  164. package/dist/esm/v3/timeout/api.js.map +1 -1
  165. package/dist/esm/v3/timeout/types.d.ts +1 -0
  166. package/dist/esm/v3/timeout/types.js.map +1 -1
  167. package/dist/esm/v3/timeout/usageTimeoutManager.d.ts +2 -0
  168. package/dist/esm/v3/timeout/usageTimeoutManager.js +10 -1
  169. package/dist/esm/v3/timeout/usageTimeoutManager.js.map +1 -1
  170. package/dist/esm/v3/types/tasks.d.ts +1 -1
  171. package/dist/esm/v3/utils/globals.d.ts +2 -0
  172. package/dist/esm/v3/utils/globals.js.map +1 -1
  173. package/dist/esm/v3/waitUntil/index.d.ts +1 -1
  174. package/dist/esm/v3/waitUntil/index.js +3 -3
  175. package/dist/esm/v3/waitUntil/index.js.map +1 -1
  176. package/dist/esm/v3/waitUntil/manager.d.ts +3 -1
  177. package/dist/esm/v3/waitUntil/manager.js +7 -3
  178. package/dist/esm/v3/waitUntil/manager.js.map +1 -1
  179. package/dist/esm/v3/waitUntil/types.d.ts +2 -2
  180. package/dist/esm/v3/workers/index.d.ts +1 -0
  181. package/dist/esm/v3/workers/index.js +1 -0
  182. package/dist/esm/v3/workers/index.js.map +1 -1
  183. package/dist/esm/v3/workers/taskExecutor.js +5 -17
  184. package/dist/esm/v3/workers/taskExecutor.js.map +1 -1
  185. package/dist/esm/v3/workers/warmStartClient.d.ts +3 -0
  186. package/dist/esm/v3/workers/warmStartClient.js +67 -28
  187. package/dist/esm/v3/workers/warmStartClient.js.map +1 -1
  188. package/dist/esm/version.js +1 -1
  189. package/package.json +2 -1
  190. package/dist/commonjs/v3/runMetadata/metadataStream.d.ts +0 -28
  191. package/dist/commonjs/v3/runMetadata/metadataStream.js +0 -155
  192. package/dist/commonjs/v3/runMetadata/metadataStream.js.map +0 -1
  193. package/dist/esm/v3/runMetadata/metadataStream.d.ts +0 -28
  194. package/dist/esm/v3/runMetadata/metadataStream.js +0 -151
  195. package/dist/esm/v3/runMetadata/metadataStream.js.map +0 -1
@@ -8,6 +8,7 @@ export class WarmStartClient {
8
8
  logger = new SimpleStructuredLogger("warm-start-client");
9
9
  apiUrl;
10
10
  backoff = new ExponentialBackoff("FullJitter");
11
+ abortController = null;
11
12
  get connectUrl() {
12
13
  return new URL("/connect", this.apiUrl);
13
14
  }
@@ -18,6 +19,26 @@ export class WarmStartClient {
18
19
  this.opts = opts;
19
20
  this.apiUrl = opts.apiUrl;
20
21
  }
22
+ abort() {
23
+ if (!this.abortController) {
24
+ this.logger.warn("Abort called but no abort controller exists");
25
+ return;
26
+ }
27
+ this.abortController.abort();
28
+ this.abortController = null;
29
+ }
30
+ async withAbort(fn) {
31
+ if (this.abortController) {
32
+ throw new Error("A warm start is already in progress");
33
+ }
34
+ this.abortController = new AbortController();
35
+ try {
36
+ return await fn(this.abortController.signal);
37
+ }
38
+ finally {
39
+ this.abortController = null;
40
+ }
41
+ }
21
42
  async connect() {
22
43
  return wrapZodFetch(WarmStartConnectResponse, this.connectUrl.href, {
23
44
  method: "GET",
@@ -35,41 +56,52 @@ export class WarmStartClient {
35
56
  });
36
57
  }
37
58
  async warmStart({ workerInstanceName, connectionTimeoutMs, keepaliveMs, }) {
38
- const res = await this.longPoll(this.warmStartUrl.href, {
39
- method: "GET",
40
- headers: {
41
- "x-trigger-workload-controller-id": this.opts.controllerId,
42
- "x-trigger-deployment-id": this.opts.deploymentId,
43
- "x-trigger-deployment-version": this.opts.deploymentVersion,
44
- "x-trigger-machine-cpu": this.opts.machineCpu,
45
- "x-trigger-machine-memory": this.opts.machineMemory,
46
- "x-trigger-worker-instance-name": workerInstanceName,
47
- },
48
- }, {
49
- timeoutMs: connectionTimeoutMs,
50
- totalDurationMs: keepaliveMs,
51
- });
52
- if (!res.ok) {
53
- this.logger.error("warmStart: failed", {
54
- error: res.error,
55
- connectionTimeoutMs,
56
- keepaliveMs,
59
+ return this.withAbort(async (abortSignal) => {
60
+ const res = await this.longPoll(this.warmStartUrl.href, {
61
+ method: "GET",
62
+ headers: {
63
+ "x-trigger-workload-controller-id": this.opts.controllerId,
64
+ "x-trigger-deployment-id": this.opts.deploymentId,
65
+ "x-trigger-deployment-version": this.opts.deploymentVersion,
66
+ "x-trigger-machine-cpu": this.opts.machineCpu,
67
+ "x-trigger-machine-memory": this.opts.machineMemory,
68
+ "x-trigger-worker-instance-name": workerInstanceName,
69
+ },
70
+ }, {
71
+ timeoutMs: connectionTimeoutMs,
72
+ totalDurationMs: keepaliveMs,
73
+ abortSignal,
57
74
  });
58
- return null;
59
- }
60
- const nextRun = DequeuedMessage.parse(res.data);
61
- this.logger.debug("warmStart: got next run", { nextRun });
62
- return nextRun;
75
+ if (!res.ok) {
76
+ this.logger.error("warmStart: failed", {
77
+ error: res.error,
78
+ connectionTimeoutMs,
79
+ keepaliveMs,
80
+ });
81
+ return null;
82
+ }
83
+ const nextRun = DequeuedMessage.parse(res.data);
84
+ this.logger.debug("warmStart: got next run", { nextRun });
85
+ return nextRun;
86
+ });
63
87
  }
64
- async longPoll(url, requestInit, { timeoutMs, totalDurationMs, }) {
88
+ async longPoll(url, requestInit, { timeoutMs, totalDurationMs, abortSignal, }) {
65
89
  this.logger.debug("Long polling", { url, requestInit, timeoutMs, totalDurationMs });
66
90
  const endTime = Date.now() + totalDurationMs;
67
91
  let retries = 0;
68
92
  while (Date.now() < endTime) {
93
+ if (abortSignal.aborted) {
94
+ return {
95
+ ok: false,
96
+ error: "Aborted - abort signal triggered before fetch",
97
+ };
98
+ }
69
99
  try {
70
- const controller = new AbortController();
71
- const signal = controller.signal;
72
- const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
100
+ const timeoutController = new AbortController();
101
+ const timeoutId = setTimeout(() => timeoutController.abort(), timeoutMs);
102
+ // Create compound signal that aborts on either timeout or parent abort
103
+ const signals = [timeoutController.signal, abortSignal];
104
+ const signal = AbortSignal.any(signals);
73
105
  const response = await fetch(url, { ...requestInit, signal });
74
106
  clearTimeout(timeoutId);
75
107
  if (response.ok) {
@@ -88,6 +120,13 @@ export class WarmStartClient {
88
120
  }
89
121
  catch (error) {
90
122
  if (error instanceof Error && error.name === "AbortError") {
123
+ // Check if this was a parent abort or just a timeout
124
+ if (abortSignal.aborted) {
125
+ return {
126
+ ok: false,
127
+ error: "Aborted - abort signal triggered during fetch",
128
+ };
129
+ }
91
130
  this.logger.log("Long poll request timed out, retrying...");
92
131
  continue;
93
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"warmStartClient.js","sourceRoot":"","sources":["../../../../src/v3/workers/warmStartClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warmStartClient.js","sourceRoot":"","sources":["../../../../src/v3/workers/warmStartClient.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.0.0-prerelease-20251007140052";
1
+ export const VERSION = "0.0.0-prerelease-20251113143926";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/core",
3
- "version": "0.0.0-prerelease-20251007140052",
3
+ "version": "0.0.0-prerelease-20251113143926",
4
4
  "description": "Core code used across the Trigger.dev SDK and platform",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -172,6 +172,7 @@
172
172
  "@opentelemetry/sdk-trace-base": "2.0.1",
173
173
  "@opentelemetry/sdk-trace-node": "2.0.1",
174
174
  "@opentelemetry/semantic-conventions": "1.36.0",
175
+ "@s2-dev/streamstore": "0.17.3",
175
176
  "dequal": "^2.0.3",
176
177
  "eventsource": "^3.0.5",
177
178
  "eventsource-parser": "^3.0.0",
@@ -1,28 +0,0 @@
1
- export type MetadataOptions<T> = {
2
- baseUrl: string;
3
- runId: string;
4
- key: string;
5
- source: AsyncIterable<T>;
6
- headers?: Record<string, string>;
7
- signal?: AbortSignal;
8
- version?: "v1" | "v2";
9
- target?: "self" | "parent" | "root";
10
- maxRetries?: number;
11
- };
12
- export declare class MetadataStream<T> {
13
- private options;
14
- private controller;
15
- private serverStream;
16
- private consumerStream;
17
- private streamPromise;
18
- private retryCount;
19
- private readonly maxRetries;
20
- private currentChunkIndex;
21
- constructor(options: MetadataOptions<T>);
22
- private createTeeStreams;
23
- private makeRequest;
24
- private initializeServerStream;
25
- wait(): Promise<void>;
26
- [Symbol.asyncIterator](): AsyncIterableIterator<T>;
27
- private buildUrl;
28
- }
@@ -1,155 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MetadataStream = void 0;
4
- const node_https_1 = require("node:https");
5
- const node_http_1 = require("node:http");
6
- const node_url_1 = require("node:url");
7
- class MetadataStream {
8
- options;
9
- controller = new AbortController();
10
- serverStream;
11
- consumerStream;
12
- streamPromise;
13
- retryCount = 0;
14
- maxRetries;
15
- currentChunkIndex = 0;
16
- constructor(options) {
17
- this.options = options;
18
- const [serverStream, consumerStream] = this.createTeeStreams();
19
- this.serverStream = serverStream;
20
- this.consumerStream = consumerStream;
21
- this.maxRetries = options.maxRetries ?? 10;
22
- this.streamPromise = this.initializeServerStream();
23
- }
24
- createTeeStreams() {
25
- const readableSource = new ReadableStream({
26
- start: async (controller) => {
27
- try {
28
- for await (const value of this.options.source) {
29
- controller.enqueue(value);
30
- }
31
- controller.close();
32
- }
33
- catch (error) {
34
- controller.error(error);
35
- }
36
- },
37
- });
38
- return readableSource.tee();
39
- }
40
- async makeRequest(startFromChunk = 0) {
41
- const reader = this.serverStream.getReader();
42
- return new Promise((resolve, reject) => {
43
- const url = new node_url_1.URL(this.buildUrl());
44
- const timeout = 15 * 60 * 1000; // 15 minutes
45
- const requestFn = url.protocol === "https:" ? node_https_1.request : node_http_1.request;
46
- const req = requestFn({
47
- method: "POST",
48
- hostname: url.hostname,
49
- port: url.port || (url.protocol === "https:" ? 443 : 80),
50
- path: url.pathname + url.search,
51
- headers: {
52
- ...this.options.headers,
53
- "Content-Type": "application/json",
54
- "X-Resume-From-Chunk": startFromChunk.toString(),
55
- },
56
- timeout,
57
- });
58
- req.on("error", (error) => {
59
- safeReleaseLock(reader);
60
- reject(error);
61
- });
62
- req.on("timeout", () => {
63
- safeReleaseLock(reader);
64
- req.destroy(new Error("Request timed out"));
65
- });
66
- req.on("response", (res) => {
67
- if (res.statusCode === 408) {
68
- safeReleaseLock(reader);
69
- if (this.retryCount < this.maxRetries) {
70
- this.retryCount++;
71
- resolve(this.makeRequest(this.currentChunkIndex));
72
- return;
73
- }
74
- reject(new Error(`Max retries (${this.maxRetries}) exceeded after timeout`));
75
- return;
76
- }
77
- if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
78
- const error = new Error(`HTTP error! status: ${res.statusCode}`);
79
- reject(error);
80
- return;
81
- }
82
- res.on("end", () => {
83
- resolve();
84
- });
85
- res.resume();
86
- });
87
- if (this.options.signal) {
88
- this.options.signal.addEventListener("abort", () => {
89
- req.destroy(new Error("Request aborted"));
90
- });
91
- }
92
- const processStream = async () => {
93
- try {
94
- while (true) {
95
- const { done, value } = await reader.read();
96
- if (done) {
97
- req.end();
98
- break;
99
- }
100
- const stringified = JSON.stringify(value) + "\n";
101
- req.write(stringified);
102
- this.currentChunkIndex++;
103
- }
104
- }
105
- catch (error) {
106
- reject(error);
107
- }
108
- };
109
- processStream().catch((error) => {
110
- reject(error);
111
- });
112
- });
113
- }
114
- async initializeServerStream() {
115
- await this.makeRequest(0);
116
- }
117
- async wait() {
118
- return this.streamPromise;
119
- }
120
- [Symbol.asyncIterator]() {
121
- return streamToAsyncIterator(this.consumerStream);
122
- }
123
- buildUrl() {
124
- switch (this.options.version ?? "v1") {
125
- case "v1": {
126
- return `${this.options.baseUrl}/realtime/v1/streams/${this.options.runId}/${this.options.target ?? "self"}/${this.options.key}`;
127
- }
128
- case "v2": {
129
- return `${this.options.baseUrl}/realtime/v2/streams/${this.options.runId}/${this.options.key}`;
130
- }
131
- }
132
- }
133
- }
134
- exports.MetadataStream = MetadataStream;
135
- async function* streamToAsyncIterator(stream) {
136
- const reader = stream.getReader();
137
- try {
138
- while (true) {
139
- const { done, value } = await reader.read();
140
- if (done)
141
- return;
142
- yield value;
143
- }
144
- }
145
- finally {
146
- safeReleaseLock(reader);
147
- }
148
- }
149
- function safeReleaseLock(reader) {
150
- try {
151
- reader.releaseLock();
152
- }
153
- catch (error) { }
154
- }
155
- //# sourceMappingURL=metadataStream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadataStream.js","sourceRoot":"","sources":["../../../../src/v3/runMetadata/metadataStream.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- export type MetadataOptions<T> = {
2
- baseUrl: string;
3
- runId: string;
4
- key: string;
5
- source: AsyncIterable<T>;
6
- headers?: Record<string, string>;
7
- signal?: AbortSignal;
8
- version?: "v1" | "v2";
9
- target?: "self" | "parent" | "root";
10
- maxRetries?: number;
11
- };
12
- export declare class MetadataStream<T> {
13
- private options;
14
- private controller;
15
- private serverStream;
16
- private consumerStream;
17
- private streamPromise;
18
- private retryCount;
19
- private readonly maxRetries;
20
- private currentChunkIndex;
21
- constructor(options: MetadataOptions<T>);
22
- private createTeeStreams;
23
- private makeRequest;
24
- private initializeServerStream;
25
- wait(): Promise<void>;
26
- [Symbol.asyncIterator](): AsyncIterableIterator<T>;
27
- private buildUrl;
28
- }
@@ -1,151 +0,0 @@
1
- import { request as httpsRequest } from "node:https";
2
- import { request as httpRequest } from "node:http";
3
- import { URL } from "node:url";
4
- export class MetadataStream {
5
- options;
6
- controller = new AbortController();
7
- serverStream;
8
- consumerStream;
9
- streamPromise;
10
- retryCount = 0;
11
- maxRetries;
12
- currentChunkIndex = 0;
13
- constructor(options) {
14
- this.options = options;
15
- const [serverStream, consumerStream] = this.createTeeStreams();
16
- this.serverStream = serverStream;
17
- this.consumerStream = consumerStream;
18
- this.maxRetries = options.maxRetries ?? 10;
19
- this.streamPromise = this.initializeServerStream();
20
- }
21
- createTeeStreams() {
22
- const readableSource = new ReadableStream({
23
- start: async (controller) => {
24
- try {
25
- for await (const value of this.options.source) {
26
- controller.enqueue(value);
27
- }
28
- controller.close();
29
- }
30
- catch (error) {
31
- controller.error(error);
32
- }
33
- },
34
- });
35
- return readableSource.tee();
36
- }
37
- async makeRequest(startFromChunk = 0) {
38
- const reader = this.serverStream.getReader();
39
- return new Promise((resolve, reject) => {
40
- const url = new URL(this.buildUrl());
41
- const timeout = 15 * 60 * 1000; // 15 minutes
42
- const requestFn = url.protocol === "https:" ? httpsRequest : httpRequest;
43
- const req = requestFn({
44
- method: "POST",
45
- hostname: url.hostname,
46
- port: url.port || (url.protocol === "https:" ? 443 : 80),
47
- path: url.pathname + url.search,
48
- headers: {
49
- ...this.options.headers,
50
- "Content-Type": "application/json",
51
- "X-Resume-From-Chunk": startFromChunk.toString(),
52
- },
53
- timeout,
54
- });
55
- req.on("error", (error) => {
56
- safeReleaseLock(reader);
57
- reject(error);
58
- });
59
- req.on("timeout", () => {
60
- safeReleaseLock(reader);
61
- req.destroy(new Error("Request timed out"));
62
- });
63
- req.on("response", (res) => {
64
- if (res.statusCode === 408) {
65
- safeReleaseLock(reader);
66
- if (this.retryCount < this.maxRetries) {
67
- this.retryCount++;
68
- resolve(this.makeRequest(this.currentChunkIndex));
69
- return;
70
- }
71
- reject(new Error(`Max retries (${this.maxRetries}) exceeded after timeout`));
72
- return;
73
- }
74
- if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
75
- const error = new Error(`HTTP error! status: ${res.statusCode}`);
76
- reject(error);
77
- return;
78
- }
79
- res.on("end", () => {
80
- resolve();
81
- });
82
- res.resume();
83
- });
84
- if (this.options.signal) {
85
- this.options.signal.addEventListener("abort", () => {
86
- req.destroy(new Error("Request aborted"));
87
- });
88
- }
89
- const processStream = async () => {
90
- try {
91
- while (true) {
92
- const { done, value } = await reader.read();
93
- if (done) {
94
- req.end();
95
- break;
96
- }
97
- const stringified = JSON.stringify(value) + "\n";
98
- req.write(stringified);
99
- this.currentChunkIndex++;
100
- }
101
- }
102
- catch (error) {
103
- reject(error);
104
- }
105
- };
106
- processStream().catch((error) => {
107
- reject(error);
108
- });
109
- });
110
- }
111
- async initializeServerStream() {
112
- await this.makeRequest(0);
113
- }
114
- async wait() {
115
- return this.streamPromise;
116
- }
117
- [Symbol.asyncIterator]() {
118
- return streamToAsyncIterator(this.consumerStream);
119
- }
120
- buildUrl() {
121
- switch (this.options.version ?? "v1") {
122
- case "v1": {
123
- return `${this.options.baseUrl}/realtime/v1/streams/${this.options.runId}/${this.options.target ?? "self"}/${this.options.key}`;
124
- }
125
- case "v2": {
126
- return `${this.options.baseUrl}/realtime/v2/streams/${this.options.runId}/${this.options.key}`;
127
- }
128
- }
129
- }
130
- }
131
- async function* streamToAsyncIterator(stream) {
132
- const reader = stream.getReader();
133
- try {
134
- while (true) {
135
- const { done, value } = await reader.read();
136
- if (done)
137
- return;
138
- yield value;
139
- }
140
- }
141
- finally {
142
- safeReleaseLock(reader);
143
- }
144
- }
145
- function safeReleaseLock(reader) {
146
- try {
147
- reader.releaseLock();
148
- }
149
- catch (error) { }
150
- }
151
- //# sourceMappingURL=metadataStream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadataStream.js","sourceRoot":"","sources":["../../../../src/v3/runMetadata/metadataStream.ts"],"names":[],"mappings":"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"}