@trigger.dev/core 4.5.0-rc.5 → 4.5.0-rc.6

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 (113) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +7 -6
  2. package/dist/commonjs/v3/apiClient/index.js +7 -1
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/runStream.js +15 -1
  5. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  6. package/dist/commonjs/v3/errors.d.ts +8 -0
  7. package/dist/commonjs/v3/errors.js +28 -1
  8. package/dist/commonjs/v3/errors.js.map +1 -1
  9. package/dist/commonjs/v3/errors.test.d.ts +1 -0
  10. package/dist/commonjs/v3/errors.test.js +38 -0
  11. package/dist/commonjs/v3/errors.test.js.map +1 -0
  12. package/dist/commonjs/v3/resource-catalog/catalog.d.ts +4 -0
  13. package/dist/commonjs/v3/resource-catalog/index.d.ts +4 -0
  14. package/dist/commonjs/v3/resource-catalog/index.js +3 -0
  15. package/dist/commonjs/v3/resource-catalog/index.js.map +1 -1
  16. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.d.ts +4 -0
  17. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js +3 -0
  18. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
  19. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.d.ts +5 -0
  20. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js +28 -0
  21. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
  22. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js +4 -0
  23. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -1
  24. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +30 -0
  25. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -1
  26. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +16 -1
  27. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +26 -0
  28. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -1
  29. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.d.ts +4 -0
  30. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js +11 -2
  31. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
  32. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +1 -0
  33. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +77 -0
  34. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +1 -0
  35. package/dist/commonjs/v3/schemas/api.d.ts +51 -0
  36. package/dist/commonjs/v3/schemas/api.js +20 -4
  37. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  38. package/dist/commonjs/v3/schemas/messages.d.ts +25 -0
  39. package/dist/commonjs/v3/schemas/messages.js +4 -0
  40. package/dist/commonjs/v3/schemas/messages.js.map +1 -1
  41. package/dist/commonjs/v3/schemas/queues.d.ts +2 -2
  42. package/dist/commonjs/v3/sessionStreams/chatSnapshot.d.ts +11 -0
  43. package/dist/commonjs/v3/sessionStreams/chatSnapshot.js +1 -0
  44. package/dist/commonjs/v3/sessionStreams/chatSnapshot.js.map +1 -1
  45. package/dist/commonjs/v3/sessionStreams/index.d.ts +1 -1
  46. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
  47. package/dist/commonjs/v3/sessionStreams/manager.d.ts +1 -1
  48. package/dist/commonjs/v3/sessionStreams/manager.js +58 -28
  49. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
  50. package/dist/commonjs/v3/sessionStreams/noopManager.d.ts +1 -1
  51. package/dist/commonjs/v3/sessionStreams/noopManager.js.map +1 -1
  52. package/dist/commonjs/v3/sessionStreams/types.d.ts +11 -2
  53. package/dist/commonjs/v3/test/test-session-stream-manager.d.ts +15 -14
  54. package/dist/commonjs/v3/test/test-session-stream-manager.js +90 -42
  55. package/dist/commonjs/v3/test/test-session-stream-manager.js.map +1 -1
  56. package/dist/commonjs/version.js +1 -1
  57. package/dist/esm/v3/apiClient/index.d.ts +7 -6
  58. package/dist/esm/v3/apiClient/index.js +7 -1
  59. package/dist/esm/v3/apiClient/index.js.map +1 -1
  60. package/dist/esm/v3/apiClient/runStream.js +15 -1
  61. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  62. package/dist/esm/v3/errors.d.ts +8 -0
  63. package/dist/esm/v3/errors.js +26 -0
  64. package/dist/esm/v3/errors.js.map +1 -1
  65. package/dist/esm/v3/errors.test.d.ts +1 -0
  66. package/dist/esm/v3/errors.test.js +36 -0
  67. package/dist/esm/v3/errors.test.js.map +1 -0
  68. package/dist/esm/v3/resource-catalog/catalog.d.ts +4 -0
  69. package/dist/esm/v3/resource-catalog/index.d.ts +4 -0
  70. package/dist/esm/v3/resource-catalog/index.js +3 -0
  71. package/dist/esm/v3/resource-catalog/index.js.map +1 -1
  72. package/dist/esm/v3/resource-catalog/noopResourceCatalog.d.ts +4 -0
  73. package/dist/esm/v3/resource-catalog/noopResourceCatalog.js +3 -0
  74. package/dist/esm/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
  75. package/dist/esm/v3/resource-catalog/standardResourceCatalog.d.ts +5 -0
  76. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js +28 -0
  77. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
  78. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js +4 -0
  79. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -1
  80. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +30 -0
  81. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -1
  82. package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +16 -1
  83. package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +27 -1
  84. package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -1
  85. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.d.ts +4 -0
  86. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js +11 -2
  87. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
  88. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +1 -0
  89. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +75 -0
  90. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +1 -0
  91. package/dist/esm/v3/schemas/api.d.ts +51 -0
  92. package/dist/esm/v3/schemas/api.js +16 -0
  93. package/dist/esm/v3/schemas/api.js.map +1 -1
  94. package/dist/esm/v3/schemas/messages.d.ts +25 -0
  95. package/dist/esm/v3/schemas/messages.js +4 -0
  96. package/dist/esm/v3/schemas/messages.js.map +1 -1
  97. package/dist/esm/v3/schemas/queues.d.ts +2 -2
  98. package/dist/esm/v3/sessionStreams/chatSnapshot.d.ts +11 -0
  99. package/dist/esm/v3/sessionStreams/chatSnapshot.js +1 -0
  100. package/dist/esm/v3/sessionStreams/chatSnapshot.js.map +1 -1
  101. package/dist/esm/v3/sessionStreams/index.d.ts +1 -1
  102. package/dist/esm/v3/sessionStreams/index.js.map +1 -1
  103. package/dist/esm/v3/sessionStreams/manager.d.ts +1 -1
  104. package/dist/esm/v3/sessionStreams/manager.js +58 -28
  105. package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
  106. package/dist/esm/v3/sessionStreams/noopManager.d.ts +1 -1
  107. package/dist/esm/v3/sessionStreams/noopManager.js.map +1 -1
  108. package/dist/esm/v3/sessionStreams/types.d.ts +11 -2
  109. package/dist/esm/v3/test/test-session-stream-manager.d.ts +15 -14
  110. package/dist/esm/v3/test/test-session-stream-manager.js +90 -42
  111. package/dist/esm/v3/test/test-session-stream-manager.js.map +1 -1
  112. package/dist/esm/version.js +1 -1
  113. package/package.json +3 -2
@@ -1,8 +1,16 @@
1
- import { Counter, Gauge, Registry } from "prom-client";
1
+ import { Counter, Gauge, Histogram, Registry } from "prom-client";
2
2
  export interface ConsumerPoolMetricsOptions {
3
3
  register?: Registry;
4
4
  prefix?: string;
5
5
  }
6
+ /**
7
+ * Outcome of a single dequeue API round-trip, used as a low-cardinality label
8
+ * on the dequeue latency histogram.
9
+ * - `success`: the call returned at least one run
10
+ * - `empty`: the call succeeded but returned no runs (the common idle case)
11
+ * - `error`: the call failed (unsuccessful response, network error, or timeout)
12
+ */
13
+ export type DequeueOutcome = "success" | "empty" | "error";
6
14
  export declare class ConsumerPoolMetrics {
7
15
  private readonly register;
8
16
  private readonly prefix;
@@ -17,6 +25,7 @@ export declare class ConsumerPoolMetrics {
17
25
  readonly scalingCooldownsApplied: Counter;
18
26
  readonly queueLengthUpdatesTotal: Counter;
19
27
  readonly batchesProcessedTotal: Counter;
28
+ readonly dequeueDurationSeconds: Histogram;
20
29
  constructor(opts?: ConsumerPoolMetricsOptions);
21
30
  /**
22
31
  * Update all gauge metrics with current state
@@ -40,4 +49,10 @@ export declare class ConsumerPoolMetrics {
40
49
  * Record a queue length update
41
50
  */
42
51
  recordQueueLengthUpdate(): void;
52
+ /**
53
+ * Record the client-side latency of a single dequeue API round-trip.
54
+ * @param seconds Wall-clock duration of the dequeue call, in seconds.
55
+ * @param outcome Whether the call returned runs, was empty, or errored.
56
+ */
57
+ observeDequeueLatency(seconds: number, outcome: DequeueOutcome): void;
43
58
  }
@@ -19,6 +19,8 @@ class ConsumerPoolMetrics {
19
19
  // Performance metrics
20
20
  queueLengthUpdatesTotal;
21
21
  batchesProcessedTotal;
22
+ // Dequeue API latency (client-side, measured around the dequeue HTTP call)
23
+ dequeueDurationSeconds;
22
24
  constructor(opts = {}) {
23
25
  this.register = opts.register ?? new prom_client_1.Registry();
24
26
  this.prefix = opts.prefix ?? "queue_consumer_pool";
@@ -84,6 +86,22 @@ class ConsumerPoolMetrics {
84
86
  help: "Total number of metric batches processed",
85
87
  registers: [this.register],
86
88
  });
89
+ this.dequeueDurationSeconds = new prom_client_1.Histogram({
90
+ name: `${this.prefix}_dequeue_duration_seconds`,
91
+ help: "Client-side duration of the dequeue API call (POST /engine/v1/worker-actions/dequeue), including the HTTP client's internal retries and backoff",
92
+ labelNames: ["outcome"],
93
+ // The HTTP client retries internally (up to 5 attempts with 0.5-5s backoff),
94
+ // so one observation can span multiple requests plus sleeps. A retryable
95
+ // failure surfaces as `error` only after >=7.5s of backoff - the 10-30s
96
+ // buckets exist so that mode doesn't collapse into +Inf. The server also
97
+ // long-polls (RUN_ENGINE_DEQUEUE_BLOCKING_TIMEOUT_SECONDS, default 10s),
98
+ // parking empty dequeues at ~10s - the 11/12.5/15/20 buckets give the
99
+ // quantiles resolution just above that boundary, where the mass sits.
100
+ // 60s brackets the worst-case error envelope (5 attempts that each hit
101
+ // the ~10s hold, plus backoff); beyond that the connection is hung.
102
+ buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2, 5, 10, 11, 12.5, 15, 20, 30, 60],
103
+ registers: [this.register],
104
+ });
87
105
  }
88
106
  /**
89
107
  * Update all gauge metrics with current state
@@ -126,6 +144,14 @@ class ConsumerPoolMetrics {
126
144
  recordQueueLengthUpdate() {
127
145
  this.queueLengthUpdatesTotal.inc();
128
146
  }
147
+ /**
148
+ * Record the client-side latency of a single dequeue API round-trip.
149
+ * @param seconds Wall-clock duration of the dequeue call, in seconds.
150
+ * @param outcome Whether the call returned runs, was empty, or errored.
151
+ */
152
+ observeDequeueLatency(seconds, outcome) {
153
+ this.dequeueDurationSeconds.observe({ outcome }, seconds);
154
+ }
129
155
  }
130
156
  exports.ConsumerPoolMetrics = ConsumerPoolMetrics;
131
157
  //# sourceMappingURL=consumerPoolMetrics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consumerPoolMetrics.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/consumerPoolMetrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumerPoolMetrics.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/consumerPoolMetrics.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { SupervisorHttpClient } from "./http.js";
2
2
  import { WorkerApiDequeueResponseBody, WorkerQueueClass } from "./schemas.js";
3
3
  import { PreDequeueFn, PreSkipFn } from "./types.js";
4
+ import type { ConsumerPoolMetrics } from "./consumerPoolMetrics.js";
4
5
  export interface QueueConsumer {
5
6
  start(): void;
6
7
  stop(): void;
@@ -18,6 +19,8 @@ export type RunQueueConsumerOptions = {
18
19
  dequeueResponseMs: number;
19
20
  pollingIntervalMs: number;
20
21
  }) => Promise<void>;
22
+ /** Optional shared pool metrics. When provided, dequeue API latency is recorded as a histogram. */
23
+ metrics?: ConsumerPoolMetrics;
21
24
  };
22
25
  export declare class RunQueueConsumer implements QueueConsumer {
23
26
  private readonly client;
@@ -26,6 +29,7 @@ export declare class RunQueueConsumer implements QueueConsumer {
26
29
  private readonly maxRunCount?;
27
30
  private readonly queueClass?;
28
31
  private readonly onDequeue;
32
+ private readonly metrics?;
29
33
  private readonly logger;
30
34
  private intervalMs;
31
35
  private idleIntervalMs;
@@ -9,6 +9,7 @@ class RunQueueConsumer {
9
9
  maxRunCount;
10
10
  queueClass;
11
11
  onDequeue;
12
+ metrics;
12
13
  logger = new structuredLogger_js_1.SimpleStructuredLogger("queue-consumer");
13
14
  intervalMs;
14
15
  idleIntervalMs;
@@ -25,6 +26,7 @@ class RunQueueConsumer {
25
26
  this.lastScheduledIntervalMs = opts.idleIntervalMs;
26
27
  this.onDequeue = opts.onDequeue;
27
28
  this.client = opts.client;
29
+ this.metrics = opts.metrics;
28
30
  }
29
31
  start() {
30
32
  if (this.isEnabled) {
@@ -80,18 +82,21 @@ class RunQueueConsumer {
80
82
  return;
81
83
  }
82
84
  let nextIntervalMs = this.idleIntervalMs;
85
+ const dequeueStart = performance.now();
83
86
  try {
84
- const dequeueStart = performance.now();
85
87
  const response = await this.client.dequeue({
86
88
  maxResources: preDequeueResult?.maxResources,
87
89
  maxRunCount: this.maxRunCount,
88
90
  queueClass: this.queueClass,
89
91
  });
90
- const dequeueResponseMs = Math.round(performance.now() - dequeueStart);
92
+ const dequeueDurationSeconds = (performance.now() - dequeueStart) / 1000;
93
+ const dequeueResponseMs = Math.round(dequeueDurationSeconds * 1000);
91
94
  if (!response.success) {
95
+ this.metrics?.observeDequeueLatency(dequeueDurationSeconds, "error");
92
96
  this.logger.error("Failed to dequeue", { error: response.error });
93
97
  }
94
98
  else {
99
+ this.metrics?.observeDequeueLatency(dequeueDurationSeconds, response.data.length > 0 ? "success" : "empty");
95
100
  try {
96
101
  await this.onDequeue(response.data, { dequeueResponseMs, pollingIntervalMs: this.lastScheduledIntervalMs });
97
102
  if (response.data.length > 0) {
@@ -104,6 +109,10 @@ class RunQueueConsumer {
104
109
  }
105
110
  }
106
111
  catch (clientError) {
112
+ // wrapZodFetch traps all errors into { success: false }, so this branch is
113
+ // unreachable with the real client today. Record defensively so a future
114
+ // client that throws can't silently lose error samples.
115
+ this.metrics?.observeDequeueLatency((performance.now() - dequeueStart) / 1000, "error");
107
116
  this.logger.error("client.dequeue error", { error: clientError });
108
117
  }
109
118
  this.scheduleNextDequeue(nextIntervalMs);
@@ -1 +1 @@
1
- {"version":3,"file":"queueConsumer.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/queueConsumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queueConsumer.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/queueConsumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const prom_client_1 = require("prom-client");
5
+ const queueConsumer_js_1 = require("./queueConsumer.js");
6
+ const consumerPoolMetrics_js_1 = require("./consumerPoolMetrics.js");
7
+ // Mock only the logger (same approach as consumerPool.test.ts)
8
+ vitest_1.vi.mock("../../utils/structuredLogger.js");
9
+ function makeClient(dequeueImpl) {
10
+ return { dequeue: vitest_1.vi.fn(dequeueImpl) };
11
+ }
12
+ (0, vitest_1.describe)("RunQueueConsumer dequeue latency metric", () => {
13
+ let register;
14
+ let metrics;
15
+ let consumer;
16
+ (0, vitest_1.beforeEach)(() => {
17
+ vitest_1.vi.clearAllMocks();
18
+ // Fake timers so the trailing scheduleNextDequeue() never fires during the test.
19
+ vitest_1.vi.useFakeTimers();
20
+ register = new prom_client_1.Registry();
21
+ metrics = new consumerPoolMetrics_js_1.ConsumerPoolMetrics({ register });
22
+ });
23
+ (0, vitest_1.afterEach)(() => {
24
+ consumer?.stop();
25
+ vitest_1.vi.clearAllTimers();
26
+ vitest_1.vi.useRealTimers();
27
+ });
28
+ /**
29
+ * Runs exactly one dequeue iteration and awaits it. We set `isEnabled`
30
+ * directly and invoke the private `dequeue()` rather than `start()`, so no
31
+ * timer-driven loop runs - the metric is recorded before scheduleNextDequeue().
32
+ */
33
+ async function runOneDequeue(opts) {
34
+ consumer = new queueConsumer_js_1.RunQueueConsumer({
35
+ client: makeClient(opts.dequeueImpl),
36
+ intervalMs: 600_000,
37
+ idleIntervalMs: 600_000,
38
+ onDequeue: async () => { },
39
+ ...(opts.withMetrics === false ? {} : { metrics }),
40
+ });
41
+ consumer.isEnabled = true;
42
+ await consumer.dequeue();
43
+ }
44
+ (0, vitest_1.it)('records outcome="empty" for a successful empty dequeue', async () => {
45
+ await runOneDequeue({ dequeueImpl: async () => ({ success: true, data: [] }) });
46
+ (0, vitest_1.expect)(await register.metrics()).toContain('queue_consumer_pool_dequeue_duration_seconds_count{outcome="empty"} 1');
47
+ });
48
+ (0, vitest_1.it)('records outcome="success" once per round-trip, regardless of message count', async () => {
49
+ const messages = [{ run: {} }, { run: {} }];
50
+ await runOneDequeue({ dequeueImpl: async () => ({ success: true, data: messages }) });
51
+ const text = await register.metrics();
52
+ // One observation for the whole batch, not one per message.
53
+ (0, vitest_1.expect)(text).toContain('queue_consumer_pool_dequeue_duration_seconds_count{outcome="success"} 1');
54
+ });
55
+ (0, vitest_1.it)('records outcome="error" when the response is unsuccessful', async () => {
56
+ await runOneDequeue({
57
+ dequeueImpl: async () => ({ success: false, error: new Error("boom") }),
58
+ });
59
+ (0, vitest_1.expect)(await register.metrics()).toContain('queue_consumer_pool_dequeue_duration_seconds_count{outcome="error"} 1');
60
+ });
61
+ // Defensive path: wrapZodFetch traps all errors today, so the real client
62
+ // never throws - this guards against a future client that does.
63
+ (0, vitest_1.it)('records outcome="error" when the dequeue call throws', async () => {
64
+ await runOneDequeue({
65
+ dequeueImpl: async () => {
66
+ throw new Error("network down");
67
+ },
68
+ });
69
+ (0, vitest_1.expect)(await register.metrics()).toContain('queue_consumer_pool_dequeue_duration_seconds_count{outcome="error"} 1');
70
+ });
71
+ (0, vitest_1.it)("is a no-op (does not throw) when no metrics instance is provided", async () => {
72
+ await (0, vitest_1.expect)(runOneDequeue({ dequeueImpl: async () => ({ success: true, data: [] }), withMetrics: false })).resolves.not.toThrow();
73
+ // Histogram has no observations - the labelled count line should be absent.
74
+ (0, vitest_1.expect)(await register.metrics()).not.toContain("queue_consumer_pool_dequeue_duration_seconds_count");
75
+ });
76
+ });
77
+ //# sourceMappingURL=queueConsumer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queueConsumer.test.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/queueConsumer.test.ts"],"names":[],"mappings":"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"}
@@ -175,6 +175,52 @@ export declare const GetProjectEnvResponse: z.ZodObject<{
175
175
  projectId: string;
176
176
  }>;
177
177
  export type GetProjectEnvResponse = z.infer<typeof GetProjectEnvResponse>;
178
+ export declare const ProjectEnvironment: z.ZodObject<{
179
+ id: z.ZodString;
180
+ slug: z.ZodString;
181
+ type: z.ZodEnum<["DEVELOPMENT", "STAGING", "PREVIEW", "PRODUCTION"]>;
182
+ isBranchableEnvironment: z.ZodBoolean;
183
+ branchName: z.ZodNullable<z.ZodString>;
184
+ paused: z.ZodBoolean;
185
+ }, "strip", z.ZodTypeAny, {
186
+ type: "PRODUCTION" | "STAGING" | "DEVELOPMENT" | "PREVIEW";
187
+ id: string;
188
+ slug: string;
189
+ branchName: string | null;
190
+ isBranchableEnvironment: boolean;
191
+ paused: boolean;
192
+ }, {
193
+ type: "PRODUCTION" | "STAGING" | "DEVELOPMENT" | "PREVIEW";
194
+ id: string;
195
+ slug: string;
196
+ branchName: string | null;
197
+ isBranchableEnvironment: boolean;
198
+ paused: boolean;
199
+ }>;
200
+ export type ProjectEnvironment = z.infer<typeof ProjectEnvironment>;
201
+ export declare const GetProjectEnvironmentsResponseBody: z.ZodArray<z.ZodObject<{
202
+ id: z.ZodString;
203
+ slug: z.ZodString;
204
+ type: z.ZodEnum<["DEVELOPMENT", "STAGING", "PREVIEW", "PRODUCTION"]>;
205
+ isBranchableEnvironment: z.ZodBoolean;
206
+ branchName: z.ZodNullable<z.ZodString>;
207
+ paused: z.ZodBoolean;
208
+ }, "strip", z.ZodTypeAny, {
209
+ type: "PRODUCTION" | "STAGING" | "DEVELOPMENT" | "PREVIEW";
210
+ id: string;
211
+ slug: string;
212
+ branchName: string | null;
213
+ isBranchableEnvironment: boolean;
214
+ paused: boolean;
215
+ }, {
216
+ type: "PRODUCTION" | "STAGING" | "DEVELOPMENT" | "PREVIEW";
217
+ id: string;
218
+ slug: string;
219
+ branchName: string | null;
220
+ isBranchableEnvironment: boolean;
221
+ paused: boolean;
222
+ }>, "many">;
223
+ export type GetProjectEnvironmentsResponseBody = z.infer<typeof GetProjectEnvironmentsResponseBody>;
178
224
  export declare const GetWorkerTaskResponse: z.ZodObject<{
179
225
  id: z.ZodString;
180
226
  slug: z.ZodString;
@@ -9349,26 +9395,31 @@ export declare const ReadSessionStreamRecordsResponseBody: z.ZodObject<{
9349
9395
  data: z.ZodUnknown;
9350
9396
  id: z.ZodString;
9351
9397
  seqNum: z.ZodNumber;
9398
+ headers: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodString], null>, "many">>;
9352
9399
  }, "strip", z.ZodTypeAny, {
9353
9400
  id: string;
9354
9401
  seqNum: number;
9355
9402
  data?: unknown;
9403
+ headers?: [string, string][] | undefined;
9356
9404
  }, {
9357
9405
  id: string;
9358
9406
  seqNum: number;
9359
9407
  data?: unknown;
9408
+ headers?: [string, string][] | undefined;
9360
9409
  }>, "many">;
9361
9410
  }, "strip", z.ZodTypeAny, {
9362
9411
  records: {
9363
9412
  id: string;
9364
9413
  seqNum: number;
9365
9414
  data?: unknown;
9415
+ headers?: [string, string][] | undefined;
9366
9416
  }[];
9367
9417
  }, {
9368
9418
  records: {
9369
9419
  id: string;
9370
9420
  seqNum: number;
9371
9421
  data?: unknown;
9422
+ headers?: [string, string][] | undefined;
9372
9423
  }[];
9373
9424
  }>;
9374
9425
  export type ReadSessionStreamRecordsResponseBody = z.infer<typeof ReadSessionStreamRecordsResponseBody>;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FailDeploymentRequestBody = exports.DeploymentErrorData = exports.GenerateRegistryCredentialsResponseBody = exports.RemoteBuildProviderStatusResponseBody = exports.InitializeDeploymentRequestBody = exports.InitializeDeploymentResponseBody = exports.CreateArtifactResponseBody = exports.CreateArtifactRequestBody = exports.UpsertBranchResponseBody = exports.UpsertBranchRequestBody = exports.DeploymentTriggeredVia = exports.ExternalBuildData = exports.CancelDeploymentRequestBody = exports.ProgressDeploymentRequestBody = exports.BuildServerMetadata = exports.FinalizeDeploymentRequestBody = exports.StartDeploymentIndexingResponseBody = exports.StartDeploymentIndexingRequestBody = exports.GetEnvironmentVariablesResponseBody = exports.RescheduleRunRequestBody = exports.AddTagsRequestBody = exports.GetBatchResponseBody = exports.BatchTriggerTaskResponse = exports.StreamBatchItemsResponse = exports.BatchItemNDJSON = exports.CreateBatchResponse = exports.CreateBatchRequestBody = exports.BatchTriggerTaskV3Response = exports.BatchTriggerTaskV3RequestBody = exports.BatchTriggerTaskV2Response = exports.BatchTriggerTaskV2RequestBody = exports.BatchTriggerTaskItem = exports.BatchTriggerTaskRequestBody = exports.TriggerTaskResponse = exports.TriggerTaskRequestBody = exports.IdempotencyKeyOptionsSchema = exports.RunTags = exports.CreateBackgroundWorkerResponse = exports.CreateBackgroundWorkerRequestBody = exports.GetJWTResponse = exports.GetJWTRequestBody = exports.GetWorkerByTagResponse = exports.GetWorkerTaskResponse = exports.GetProjectEnvResponse = exports.CreateProjectRequestBody = exports.GetOrgsResponseBody = exports.GetProjectsResponseBody = exports.GetProjectResponseBody = exports.WhoAmIResponseSchema = exports.RunEngineVersion = void 0;
4
- exports.SubscribeRunRawShape = exports.UpdateMetadataResponseBody = exports.UpdateMetadataRequestBody = exports.EnvironmentVariableWithSecret = exports.EnvironmentVariables = exports.EnvironmentVariable = exports.EnvironmentVariableValue = exports.EnvironmentVariableResponseBody = exports.ImportEnvironmentVariablesRequestBody = exports.UpdateEnvironmentVariableRequestBody = exports.CreateEnvironmentVariableRequestBody = exports.ListRunResponse = exports.ListRunResponseItem = exports.RetrieveRunResponse = exports.RelatedRunDetails = exports.TriggerFunction = exports.RunScheduleDetails = exports.RunEnvironmentDetails = exports.AttemptStatus = exports.RunStatus = exports.TimezonesResult = exports.ListScheduleOptions = exports.ListSchedulesResult = exports.DeletedScheduleObject = exports.ScheduleObject = exports.ScheduleGenerator = exports.UpdateScheduleOptions = exports.CreateScheduleOptions = exports.ScheduledTaskPayload = exports.ScheduleType = exports.ResetIdempotencyKeyResponse = exports.CanceledRunResponse = exports.ReplayRunResponse = exports.DevDisconnectResponseBody = exports.DevDisconnectRequestBody = exports.DevDequeueResponseBody = exports.DevDequeueRequestBody = exports.DevConfigResponseBody = exports.WorkersCreateResponseBody = exports.WorkersCreateRequestBody = exports.WorkersListResponseBody = exports.CreateUploadPayloadUrlResponseBody = exports.DeploymentEventFromString = exports.DeploymentEvent = exports.DeploymentFinalizedEvent = exports.DeploymentLogEvent = exports.GetLatestDeploymentResponseBody = exports.GetDeploymentResponseBody = exports.PromoteDeploymentResponseBody = exports.FailDeploymentResponseBody = void 0;
5
- exports.ResolvePromptRequestBody = exports.ReadSessionStreamRecordsResponseBody = exports.SendInputStreamResponseBody = exports.AppendToStreamResponseBody = exports.CreateStreamResponseBody = exports.RetrieveSpanDetailResponseBody = exports.RetrieveRunTraceResponseBody = exports.RetrieveRunTraceSpan = exports.RetrieveRunTraceSpanSchema = exports.ApiBranchListResponseBody = exports.RetrieveCurrentDeploymentResponseBody = exports.ApiDeploymentListResponseItem = exports.ApiDeploymentListSearchParams = exports.ApiDeploymentListOptions = exports.ApiDeploymentListParams = exports.WaitForDurationResponseBody = exports.WaitForDurationRequestBody = exports.WaitForWaitpointTokenResponseBody = exports.CompleteWaitpointTokenResponseBody = exports.ListSessionsResponseBody = exports.ListedSessionItem = exports.ListSessionsOptions = exports.ListSessionsQueryParams = exports.SessionStatus = exports.CloseSessionRequestBody = exports.UpdateSessionRequestBody = exports.EndAndContinueSessionResponseBody = exports.EndAndContinueSessionRequestBody = exports.RetrieveSessionResponseBody = exports.CreatedSessionResponseBody = exports.SessionItem = exports.CreateSessionRequestBody = exports.SessionTriggerConfig = exports.CompleteWaitpointTokenRequestBody = exports.WaitpointRetrieveTokenResponse = exports.WaitpointListTokenItem = exports.WaitpointTokenItem = exports.WaitpointTokenStatus = exports.waitpointTokenStatuses = exports.CreateSessionStreamWaitpointResponseBody = exports.CreateSessionStreamWaitpointRequestBody = exports.CreateInputStreamWaitpointResponseBody = exports.CreateInputStreamWaitpointRequestBody = exports.CreateWaitpointTokenResponseBody = exports.CreateWaitpointTokenRequestBody = exports.TimePeriod = exports.SubscribeRealtimeStreamChunkRawShape = exports.RetrieveBatchV2Response = exports.RetrieveBatchResponse = exports.BatchStatus = void 0;
6
- exports.PromptOverrideCreatedResponseBody = exports.PromptOkResponseBody = exports.ReactivatePromptOverrideRequestBody = exports.UpdatePromptOverrideRequestBody = exports.CreatePromptOverrideRequestBody = exports.PromotePromptVersionRequestBody = exports.ListPromptVersionsResponseBody = exports.ListPromptsResponseBody = exports.ResolvePromptResponseBody = void 0;
3
+ exports.GenerateRegistryCredentialsResponseBody = exports.RemoteBuildProviderStatusResponseBody = exports.InitializeDeploymentRequestBody = exports.InitializeDeploymentResponseBody = exports.CreateArtifactResponseBody = exports.CreateArtifactRequestBody = exports.UpsertBranchResponseBody = exports.UpsertBranchRequestBody = exports.DeploymentTriggeredVia = exports.ExternalBuildData = exports.CancelDeploymentRequestBody = exports.ProgressDeploymentRequestBody = exports.BuildServerMetadata = exports.FinalizeDeploymentRequestBody = exports.StartDeploymentIndexingResponseBody = exports.StartDeploymentIndexingRequestBody = exports.GetEnvironmentVariablesResponseBody = exports.RescheduleRunRequestBody = exports.AddTagsRequestBody = exports.GetBatchResponseBody = exports.BatchTriggerTaskResponse = exports.StreamBatchItemsResponse = exports.BatchItemNDJSON = exports.CreateBatchResponse = exports.CreateBatchRequestBody = exports.BatchTriggerTaskV3Response = exports.BatchTriggerTaskV3RequestBody = exports.BatchTriggerTaskV2Response = exports.BatchTriggerTaskV2RequestBody = exports.BatchTriggerTaskItem = exports.BatchTriggerTaskRequestBody = exports.TriggerTaskResponse = exports.TriggerTaskRequestBody = exports.IdempotencyKeyOptionsSchema = exports.RunTags = exports.CreateBackgroundWorkerResponse = exports.CreateBackgroundWorkerRequestBody = exports.GetJWTResponse = exports.GetJWTRequestBody = exports.GetWorkerByTagResponse = exports.GetWorkerTaskResponse = exports.GetProjectEnvironmentsResponseBody = exports.ProjectEnvironment = exports.GetProjectEnvResponse = exports.CreateProjectRequestBody = exports.GetOrgsResponseBody = exports.GetProjectsResponseBody = exports.GetProjectResponseBody = exports.WhoAmIResponseSchema = exports.RunEngineVersion = void 0;
4
+ exports.UpdateMetadataRequestBody = exports.EnvironmentVariableWithSecret = exports.EnvironmentVariables = exports.EnvironmentVariable = exports.EnvironmentVariableValue = exports.EnvironmentVariableResponseBody = exports.ImportEnvironmentVariablesRequestBody = exports.UpdateEnvironmentVariableRequestBody = exports.CreateEnvironmentVariableRequestBody = exports.ListRunResponse = exports.ListRunResponseItem = exports.RetrieveRunResponse = exports.RelatedRunDetails = exports.TriggerFunction = exports.RunScheduleDetails = exports.RunEnvironmentDetails = exports.AttemptStatus = exports.RunStatus = exports.TimezonesResult = exports.ListScheduleOptions = exports.ListSchedulesResult = exports.DeletedScheduleObject = exports.ScheduleObject = exports.ScheduleGenerator = exports.UpdateScheduleOptions = exports.CreateScheduleOptions = exports.ScheduledTaskPayload = exports.ScheduleType = exports.ResetIdempotencyKeyResponse = exports.CanceledRunResponse = exports.ReplayRunResponse = exports.DevDisconnectResponseBody = exports.DevDisconnectRequestBody = exports.DevDequeueResponseBody = exports.DevDequeueRequestBody = exports.DevConfigResponseBody = exports.WorkersCreateResponseBody = exports.WorkersCreateRequestBody = exports.WorkersListResponseBody = exports.CreateUploadPayloadUrlResponseBody = exports.DeploymentEventFromString = exports.DeploymentEvent = exports.DeploymentFinalizedEvent = exports.DeploymentLogEvent = exports.GetLatestDeploymentResponseBody = exports.GetDeploymentResponseBody = exports.PromoteDeploymentResponseBody = exports.FailDeploymentResponseBody = exports.FailDeploymentRequestBody = exports.DeploymentErrorData = void 0;
5
+ exports.SendInputStreamResponseBody = exports.AppendToStreamResponseBody = exports.CreateStreamResponseBody = exports.RetrieveSpanDetailResponseBody = exports.RetrieveRunTraceResponseBody = exports.RetrieveRunTraceSpan = exports.RetrieveRunTraceSpanSchema = exports.ApiBranchListResponseBody = exports.RetrieveCurrentDeploymentResponseBody = exports.ApiDeploymentListResponseItem = exports.ApiDeploymentListSearchParams = exports.ApiDeploymentListOptions = exports.ApiDeploymentListParams = exports.WaitForDurationResponseBody = exports.WaitForDurationRequestBody = exports.WaitForWaitpointTokenResponseBody = exports.CompleteWaitpointTokenResponseBody = exports.ListSessionsResponseBody = exports.ListedSessionItem = exports.ListSessionsOptions = exports.ListSessionsQueryParams = exports.SessionStatus = exports.CloseSessionRequestBody = exports.UpdateSessionRequestBody = exports.EndAndContinueSessionResponseBody = exports.EndAndContinueSessionRequestBody = exports.RetrieveSessionResponseBody = exports.CreatedSessionResponseBody = exports.SessionItem = exports.CreateSessionRequestBody = exports.SessionTriggerConfig = exports.CompleteWaitpointTokenRequestBody = exports.WaitpointRetrieveTokenResponse = exports.WaitpointListTokenItem = exports.WaitpointTokenItem = exports.WaitpointTokenStatus = exports.waitpointTokenStatuses = exports.CreateSessionStreamWaitpointResponseBody = exports.CreateSessionStreamWaitpointRequestBody = exports.CreateInputStreamWaitpointResponseBody = exports.CreateInputStreamWaitpointRequestBody = exports.CreateWaitpointTokenResponseBody = exports.CreateWaitpointTokenRequestBody = exports.TimePeriod = exports.SubscribeRealtimeStreamChunkRawShape = exports.RetrieveBatchV2Response = exports.RetrieveBatchResponse = exports.BatchStatus = exports.SubscribeRunRawShape = exports.UpdateMetadataResponseBody = void 0;
6
+ exports.PromptOverrideCreatedResponseBody = exports.PromptOkResponseBody = exports.ReactivatePromptOverrideRequestBody = exports.UpdatePromptOverrideRequestBody = exports.CreatePromptOverrideRequestBody = exports.PromotePromptVersionRequestBody = exports.ListPromptVersionsResponseBody = exports.ListPromptsResponseBody = exports.ResolvePromptResponseBody = exports.ResolvePromptRequestBody = exports.ReadSessionStreamRecordsResponseBody = void 0;
7
7
  exports.isWaitpointOutputTimeout = isWaitpointOutputTimeout;
8
8
  exports.timeoutError = timeoutError;
9
9
  const zod_1 = require("zod");
@@ -59,6 +59,17 @@ exports.GetProjectEnvResponse = zod_1.z.object({
59
59
  apiUrl: zod_1.z.string(),
60
60
  projectId: zod_1.z.string(),
61
61
  });
62
+ exports.ProjectEnvironment = zod_1.z.object({
63
+ id: zod_1.z.string(),
64
+ /// The slug used as the environment identifier in env var endpoints (e.g. "dev", "stg", "prod", "preview")
65
+ slug: zod_1.z.string(),
66
+ type: zod_1.z.enum(["DEVELOPMENT", "STAGING", "PREVIEW", "PRODUCTION"]),
67
+ /// Whether this is the branchable parent (preview); individual branches are not returned
68
+ isBranchableEnvironment: zod_1.z.boolean(),
69
+ branchName: zod_1.z.string().nullable(),
70
+ paused: zod_1.z.boolean(),
71
+ });
72
+ exports.GetProjectEnvironmentsResponseBody = zod_1.z.array(exports.ProjectEnvironment);
62
73
  // Zod schema for the response body type
63
74
  exports.GetWorkerTaskResponse = zod_1.z.object({
64
75
  id: zod_1.z.string(),
@@ -1570,6 +1581,11 @@ exports.ReadSessionStreamRecordsResponseBody = zod_1.z.object({
1570
1581
  data: zod_1.z.unknown(),
1571
1582
  id: zod_1.z.string(),
1572
1583
  seqNum: zod_1.z.number(),
1584
+ // S2 record headers — present on Trigger control records (e.g.
1585
+ // `trigger-control: turn-complete` plus sibling headers). The
1586
+ // server has always serialized them; older schemas stripped them
1587
+ // client-side, so treat as optional.
1588
+ headers: zod_1.z.array(zod_1.z.tuple([zod_1.z.string(), zod_1.z.string()])).optional(),
1573
1589
  })),
1574
1590
  });
1575
1591
  exports.ResolvePromptRequestBody = zod_1.z.object({