@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.
- package/dist/commonjs/v3/apiClient/index.d.ts +9 -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 +61 -0
- package/dist/commonjs/v3/schemas/api.js +22 -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 +9 -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 +61 -0
- package/dist/esm/v3/schemas/api.js +18 -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":"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"}
|
|
@@ -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;
|
|
@@ -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.
|
|
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(),
|
|
@@ -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({
|