@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.
- package/dist/commonjs/v3/apiClient/index.d.ts +7 -6
- package/dist/commonjs/v3/apiClient/index.js +7 -1
- package/dist/commonjs/v3/apiClient/index.js.map +1 -1
- package/dist/commonjs/v3/apiClient/runStream.js +15 -1
- package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
- package/dist/commonjs/v3/errors.d.ts +8 -0
- package/dist/commonjs/v3/errors.js +28 -1
- package/dist/commonjs/v3/errors.js.map +1 -1
- package/dist/commonjs/v3/errors.test.d.ts +1 -0
- package/dist/commonjs/v3/errors.test.js +38 -0
- package/dist/commonjs/v3/errors.test.js.map +1 -0
- package/dist/commonjs/v3/resource-catalog/catalog.d.ts +4 -0
- package/dist/commonjs/v3/resource-catalog/index.d.ts +4 -0
- package/dist/commonjs/v3/resource-catalog/index.js +3 -0
- package/dist/commonjs/v3/resource-catalog/index.js.map +1 -1
- package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.d.ts +4 -0
- package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js +3 -0
- package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
- package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.d.ts +5 -0
- package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js +28 -0
- package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js +4 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +30 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +16 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +26 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.d.ts +4 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js +11 -2
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +77 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +1 -0
- package/dist/commonjs/v3/schemas/api.d.ts +51 -0
- package/dist/commonjs/v3/schemas/api.js +20 -4
- package/dist/commonjs/v3/schemas/api.js.map +1 -1
- package/dist/commonjs/v3/schemas/messages.d.ts +25 -0
- package/dist/commonjs/v3/schemas/messages.js +4 -0
- package/dist/commonjs/v3/schemas/messages.js.map +1 -1
- package/dist/commonjs/v3/schemas/queues.d.ts +2 -2
- package/dist/commonjs/v3/sessionStreams/chatSnapshot.d.ts +11 -0
- package/dist/commonjs/v3/sessionStreams/chatSnapshot.js +1 -0
- package/dist/commonjs/v3/sessionStreams/chatSnapshot.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/index.d.ts +1 -1
- package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/manager.d.ts +1 -1
- package/dist/commonjs/v3/sessionStreams/manager.js +58 -28
- package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/noopManager.d.ts +1 -1
- package/dist/commonjs/v3/sessionStreams/noopManager.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/types.d.ts +11 -2
- package/dist/commonjs/v3/test/test-session-stream-manager.d.ts +15 -14
- package/dist/commonjs/v3/test/test-session-stream-manager.js +90 -42
- package/dist/commonjs/v3/test/test-session-stream-manager.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/apiClient/index.d.ts +7 -6
- package/dist/esm/v3/apiClient/index.js +7 -1
- package/dist/esm/v3/apiClient/index.js.map +1 -1
- package/dist/esm/v3/apiClient/runStream.js +15 -1
- package/dist/esm/v3/apiClient/runStream.js.map +1 -1
- package/dist/esm/v3/errors.d.ts +8 -0
- package/dist/esm/v3/errors.js +26 -0
- package/dist/esm/v3/errors.js.map +1 -1
- package/dist/esm/v3/errors.test.d.ts +1 -0
- package/dist/esm/v3/errors.test.js +36 -0
- package/dist/esm/v3/errors.test.js.map +1 -0
- package/dist/esm/v3/resource-catalog/catalog.d.ts +4 -0
- package/dist/esm/v3/resource-catalog/index.d.ts +4 -0
- package/dist/esm/v3/resource-catalog/index.js +3 -0
- package/dist/esm/v3/resource-catalog/index.js.map +1 -1
- package/dist/esm/v3/resource-catalog/noopResourceCatalog.d.ts +4 -0
- package/dist/esm/v3/resource-catalog/noopResourceCatalog.js +3 -0
- package/dist/esm/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
- package/dist/esm/v3/resource-catalog/standardResourceCatalog.d.ts +5 -0
- package/dist/esm/v3/resource-catalog/standardResourceCatalog.js +28 -0
- package/dist/esm/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js +4 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +30 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +16 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +27 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.d.ts +4 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js +11 -2
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +75 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +1 -0
- package/dist/esm/v3/schemas/api.d.ts +51 -0
- package/dist/esm/v3/schemas/api.js +16 -0
- package/dist/esm/v3/schemas/api.js.map +1 -1
- package/dist/esm/v3/schemas/messages.d.ts +25 -0
- package/dist/esm/v3/schemas/messages.js +4 -0
- package/dist/esm/v3/schemas/messages.js.map +1 -1
- package/dist/esm/v3/schemas/queues.d.ts +2 -2
- package/dist/esm/v3/sessionStreams/chatSnapshot.d.ts +11 -0
- package/dist/esm/v3/sessionStreams/chatSnapshot.js +1 -0
- package/dist/esm/v3/sessionStreams/chatSnapshot.js.map +1 -1
- package/dist/esm/v3/sessionStreams/index.d.ts +1 -1
- package/dist/esm/v3/sessionStreams/index.js.map +1 -1
- package/dist/esm/v3/sessionStreams/manager.d.ts +1 -1
- package/dist/esm/v3/sessionStreams/manager.js +58 -28
- package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
- package/dist/esm/v3/sessionStreams/noopManager.d.ts +1 -1
- package/dist/esm/v3/sessionStreams/noopManager.js.map +1 -1
- package/dist/esm/v3/sessionStreams/types.d.ts +11 -2
- package/dist/esm/v3/test/test-session-stream-manager.d.ts +15 -14
- package/dist/esm/v3/test/test-session-stream-manager.js +90 -42
- package/dist/esm/v3/test/test-session-stream-manager.js.map +1 -1
- package/dist/esm/version.js +1 -1
- 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":";;;AAAA,6CAAkE;
|
|
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
|
|
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":";;;AAAA,yEAAyE;
|
|
1
|
+
{"version":3,"file":"queueConsumer.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/queueConsumer.ts"],"names":[],"mappings":";;;AAAA,yEAAyE;AAyBzE,MAAa,gBAAgB;IACV,MAAM,CAAuB;IAC7B,UAAU,CAAgB;IAC1B,OAAO,CAAa;IACpB,WAAW,CAAU;IACrB,UAAU,CAAoB;IAC9B,SAAS,CAA+H;IACxI,OAAO,CAAuB;IAE9B,MAAM,GAAG,IAAI,4CAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE/D,UAAU,CAAS;IACnB,cAAc,CAAS;IACvB,SAAS,CAAU;IACnB,uBAAuB,CAAS;IAExC,YAAY,IAA6B;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YAC/B,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;YAC7B,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,gBAA+D,CAAC;QACpE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAEpC,IAAI,CAAC;gBACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,CAAC;YAAC,OAAO,eAAe,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE9D,IACE,gBAAgB,EAAE,WAAW;YAC7B,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;YACzC,gBAAgB,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC,EAC5C,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAE5D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAE/B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvB,CAAC;gBAAC,OAAO,YAAY,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAEzC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,gBAAgB,EAAE,YAAY;gBAC5C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,MAAM,sBAAsB,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;YACzE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;YAEpE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,EAAE,qBAAqB,CACjC,sBAAsB,EACtB,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC/C,CAAC;gBAEF,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;oBAE5G,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAAC,OAAO,YAAY,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,2EAA2E;YAC3E,yEAAyE;YACzE,wDAAwD;YACxD,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YACxF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF;AAnJD,4CAmJC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
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({
|