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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +9 -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 +61 -0
  36. package/dist/commonjs/v3/schemas/api.js +22 -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 +9 -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 +61 -0
  92. package/dist/esm/v3/schemas/api.js +18 -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;
@@ -9168,6 +9214,8 @@ export declare const RetrieveSpanDetailResponseBody: z.ZodObject<{
9168
9214
  inputCost: z.ZodOptional<z.ZodNumber>;
9169
9215
  outputCost: z.ZodOptional<z.ZodNumber>;
9170
9216
  totalCost: z.ZodOptional<z.ZodNumber>;
9217
+ cachedCost: z.ZodOptional<z.ZodNumber>;
9218
+ cacheCreationCost: z.ZodOptional<z.ZodNumber>;
9171
9219
  tokensPerSecond: z.ZodOptional<z.ZodNumber>;
9172
9220
  msToFirstChunk: z.ZodOptional<z.ZodNumber>;
9173
9221
  durationMs: z.ZodNumber;
@@ -9186,6 +9234,8 @@ export declare const RetrieveSpanDetailResponseBody: z.ZodObject<{
9186
9234
  inputCost?: number | undefined;
9187
9235
  outputCost?: number | undefined;
9188
9236
  totalCost?: number | undefined;
9237
+ cachedCost?: number | undefined;
9238
+ cacheCreationCost?: number | undefined;
9189
9239
  tokensPerSecond?: number | undefined;
9190
9240
  msToFirstChunk?: number | undefined;
9191
9241
  finishReason?: string | undefined;
@@ -9203,6 +9253,8 @@ export declare const RetrieveSpanDetailResponseBody: z.ZodObject<{
9203
9253
  inputCost?: number | undefined;
9204
9254
  outputCost?: number | undefined;
9205
9255
  totalCost?: number | undefined;
9256
+ cachedCost?: number | undefined;
9257
+ cacheCreationCost?: number | undefined;
9206
9258
  tokensPerSecond?: number | undefined;
9207
9259
  msToFirstChunk?: number | undefined;
9208
9260
  finishReason?: string | undefined;
@@ -9251,6 +9303,8 @@ export declare const RetrieveSpanDetailResponseBody: z.ZodObject<{
9251
9303
  inputCost?: number | undefined;
9252
9304
  outputCost?: number | undefined;
9253
9305
  totalCost?: number | undefined;
9306
+ cachedCost?: number | undefined;
9307
+ cacheCreationCost?: number | undefined;
9254
9308
  tokensPerSecond?: number | undefined;
9255
9309
  msToFirstChunk?: number | undefined;
9256
9310
  finishReason?: string | undefined;
@@ -9289,6 +9343,8 @@ export declare const RetrieveSpanDetailResponseBody: z.ZodObject<{
9289
9343
  inputCost?: number | undefined;
9290
9344
  outputCost?: number | undefined;
9291
9345
  totalCost?: number | undefined;
9346
+ cachedCost?: number | undefined;
9347
+ cacheCreationCost?: number | undefined;
9292
9348
  tokensPerSecond?: number | undefined;
9293
9349
  msToFirstChunk?: number | undefined;
9294
9350
  finishReason?: string | undefined;
@@ -9349,26 +9405,31 @@ export declare const ReadSessionStreamRecordsResponseBody: z.ZodObject<{
9349
9405
  data: z.ZodUnknown;
9350
9406
  id: z.ZodString;
9351
9407
  seqNum: z.ZodNumber;
9408
+ headers: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodString], null>, "many">>;
9352
9409
  }, "strip", z.ZodTypeAny, {
9353
9410
  id: string;
9354
9411
  seqNum: number;
9355
9412
  data?: unknown;
9413
+ headers?: [string, string][] | undefined;
9356
9414
  }, {
9357
9415
  id: string;
9358
9416
  seqNum: number;
9359
9417
  data?: unknown;
9418
+ headers?: [string, string][] | undefined;
9360
9419
  }>, "many">;
9361
9420
  }, "strip", z.ZodTypeAny, {
9362
9421
  records: {
9363
9422
  id: string;
9364
9423
  seqNum: number;
9365
9424
  data?: unknown;
9425
+ headers?: [string, string][] | undefined;
9366
9426
  }[];
9367
9427
  }, {
9368
9428
  records: {
9369
9429
  id: string;
9370
9430
  seqNum: number;
9371
9431
  data?: unknown;
9432
+ headers?: [string, string][] | undefined;
9372
9433
  }[];
9373
9434
  }>;
9374
9435
  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(),
@@ -1524,6 +1535,8 @@ exports.RetrieveSpanDetailResponseBody = zod_1.z.object({
1524
1535
  inputCost: zod_1.z.number().optional(),
1525
1536
  outputCost: zod_1.z.number().optional(),
1526
1537
  totalCost: zod_1.z.number().optional(),
1538
+ cachedCost: zod_1.z.number().optional(),
1539
+ cacheCreationCost: zod_1.z.number().optional(),
1527
1540
  tokensPerSecond: zod_1.z.number().optional(),
1528
1541
  msToFirstChunk: zod_1.z.number().optional(),
1529
1542
  durationMs: zod_1.z.number(),
@@ -1570,6 +1583,11 @@ exports.ReadSessionStreamRecordsResponseBody = zod_1.z.object({
1570
1583
  data: zod_1.z.unknown(),
1571
1584
  id: zod_1.z.string(),
1572
1585
  seqNum: zod_1.z.number(),
1586
+ // S2 record headers — present on Trigger control records (e.g.
1587
+ // `trigger-control: turn-complete` plus sibling headers). The
1588
+ // server has always serialized them; older schemas stripped them
1589
+ // client-side, so treat as optional.
1590
+ headers: zod_1.z.array(zod_1.z.tuple([zod_1.z.string(), zod_1.z.string()])).optional(),
1573
1591
  })),
1574
1592
  });
1575
1593
  exports.ResolvePromptRequestBody = zod_1.z.object({