@trigger.dev/core 0.0.0-chat-prerelease-20260415164455 → 0.0.0-chat-prerelease-20260418083610

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 (47) hide show
  1. package/dist/commonjs/v3/errors.d.ts +6 -0
  2. package/dist/commonjs/v3/errors.js +72 -11
  3. package/dist/commonjs/v3/errors.js.map +1 -1
  4. package/dist/commonjs/v3/otel/utils.js +30 -5
  5. package/dist/commonjs/v3/otel/utils.js.map +1 -1
  6. package/dist/commonjs/v3/test/index.d.ts +4 -0
  7. package/dist/commonjs/v3/test/index.js +12 -0
  8. package/dist/commonjs/v3/test/index.js.map +1 -0
  9. package/dist/commonjs/v3/test/mock-task-context.d.ts +105 -0
  10. package/dist/commonjs/v3/test/mock-task-context.js +179 -0
  11. package/dist/commonjs/v3/test/mock-task-context.js.map +1 -0
  12. package/dist/commonjs/v3/test/test-input-stream-manager.d.ts +46 -0
  13. package/dist/commonjs/v3/test/test-input-stream-manager.js +192 -0
  14. package/dist/commonjs/v3/test/test-input-stream-manager.js.map +1 -0
  15. package/dist/commonjs/v3/test/test-realtime-streams-manager.d.ts +40 -0
  16. package/dist/commonjs/v3/test/test-realtime-streams-manager.js +139 -0
  17. package/dist/commonjs/v3/test/test-realtime-streams-manager.js.map +1 -0
  18. package/dist/commonjs/v3/test/test-run-metadata-manager.d.ts +31 -0
  19. package/dist/commonjs/v3/test/test-run-metadata-manager.js +86 -0
  20. package/dist/commonjs/v3/test/test-run-metadata-manager.js.map +1 -0
  21. package/dist/commonjs/v3/tracer.js +1 -4
  22. package/dist/commonjs/v3/tracer.js.map +1 -1
  23. package/dist/commonjs/version.js +1 -1
  24. package/dist/esm/v3/errors.d.ts +6 -0
  25. package/dist/esm/v3/errors.js +70 -11
  26. package/dist/esm/v3/errors.js.map +1 -1
  27. package/dist/esm/v3/otel/utils.js +30 -5
  28. package/dist/esm/v3/otel/utils.js.map +1 -1
  29. package/dist/esm/v3/test/index.d.ts +4 -0
  30. package/dist/esm/v3/test/index.js +5 -0
  31. package/dist/esm/v3/test/index.js.map +1 -0
  32. package/dist/esm/v3/test/mock-task-context.d.ts +105 -0
  33. package/dist/esm/v3/test/mock-task-context.js +176 -0
  34. package/dist/esm/v3/test/mock-task-context.js.map +1 -0
  35. package/dist/esm/v3/test/test-input-stream-manager.d.ts +46 -0
  36. package/dist/esm/v3/test/test-input-stream-manager.js +188 -0
  37. package/dist/esm/v3/test/test-input-stream-manager.js.map +1 -0
  38. package/dist/esm/v3/test/test-realtime-streams-manager.d.ts +40 -0
  39. package/dist/esm/v3/test/test-realtime-streams-manager.js +135 -0
  40. package/dist/esm/v3/test/test-realtime-streams-manager.js.map +1 -0
  41. package/dist/esm/v3/test/test-run-metadata-manager.d.ts +31 -0
  42. package/dist/esm/v3/test/test-run-metadata-manager.js +82 -0
  43. package/dist/esm/v3/test/test-run-metadata-manager.js.map +1 -0
  44. package/dist/esm/v3/tracer.js +2 -5
  45. package/dist/esm/v3/tracer.js.map +1 -1
  46. package/dist/esm/version.js +1 -1
  47. package/package.json +16 -1
@@ -0,0 +1,46 @@
1
+ import type { InputStreamManager } from "../inputStreams/types.js";
2
+ import { InputStreamOncePromise } from "../inputStreams/types.js";
3
+ import type { InputStreamOnceOptions } from "../realtimeStreams/types.js";
4
+ type Handler = (data: unknown) => void | Promise<void>;
5
+ /**
6
+ * In-memory implementation of `InputStreamManager` for unit tests.
7
+ *
8
+ * Tests push data via the driver's `.send(streamId, data)` method. Any
9
+ * pending `.once()` waiters resolve immediately, and all `.on()` handlers
10
+ * fire synchronously (awaited if they return a promise).
11
+ *
12
+ * Use this alongside {@link runInMockTaskContext} — not directly.
13
+ */
14
+ export declare class TestInputStreamManager implements InputStreamManager {
15
+ private handlers;
16
+ private onceWaiters;
17
+ private latest;
18
+ private lastSeqNums;
19
+ private pendingSends;
20
+ setRunId(_runId: string, _streamsVersion?: string): void;
21
+ on(streamId: string, handler: Handler): {
22
+ off: () => void;
23
+ };
24
+ once(streamId: string, options?: InputStreamOnceOptions): InputStreamOncePromise<unknown>;
25
+ peek(streamId: string): unknown | undefined;
26
+ lastSeqNum(streamId: string): number | undefined;
27
+ setLastSeqNum(streamId: string, seqNum: number): void;
28
+ shiftBuffer(_streamId: string): boolean;
29
+ disconnectStream(_streamId: string): void;
30
+ clearHandlers(): void;
31
+ reset(): void;
32
+ disconnect(): void;
33
+ connectTail(_runId: string, _fromSeq?: number): void;
34
+ /**
35
+ * Push data onto an input stream. Resolves pending `once()` waiters
36
+ * and fires all `on()` handlers (awaiting async handlers).
37
+ */
38
+ __sendFromTest(streamId: string, data: unknown): Promise<void>;
39
+ /**
40
+ * Immediately resolve every pending `once()` waiter for a stream with a
41
+ * timeout error. Used to simulate closed streams (e.g. `exitAfterPreloadIdle`).
42
+ */
43
+ __closeFromTest(streamId: string): void;
44
+ private removeWaiter;
45
+ }
46
+ export {};
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestInputStreamManager = void 0;
4
+ const types_js_1 = require("../inputStreams/types.js");
5
+ /**
6
+ * In-memory implementation of `InputStreamManager` for unit tests.
7
+ *
8
+ * Tests push data via the driver's `.send(streamId, data)` method. Any
9
+ * pending `.once()` waiters resolve immediately, and all `.on()` handlers
10
+ * fire synchronously (awaited if they return a promise).
11
+ *
12
+ * Use this alongside {@link runInMockTaskContext} — not directly.
13
+ */
14
+ class TestInputStreamManager {
15
+ handlers = new Map();
16
+ onceWaiters = new Map();
17
+ latest = new Map();
18
+ lastSeqNums = new Map();
19
+ // Buffered sends that arrived before a `.once()` waiter was registered.
20
+ // `.once()` semantically means "wait for NEXT value" but tests often
21
+ // send data before the task has had a chance to reach the wait point.
22
+ // Buffering closes that race so the waiter picks up the pending send.
23
+ pendingSends = new Map();
24
+ setRunId(_runId, _streamsVersion) {
25
+ // No-op — the test driver tracks nothing about runs
26
+ }
27
+ on(streamId, handler) {
28
+ if (!this.handlers.has(streamId)) {
29
+ this.handlers.set(streamId, new Set());
30
+ }
31
+ this.handlers.get(streamId).add(handler);
32
+ return {
33
+ off: () => {
34
+ this.handlers.get(streamId)?.delete(handler);
35
+ },
36
+ };
37
+ }
38
+ once(streamId, options) {
39
+ return new types_js_1.InputStreamOncePromise((resolve) => {
40
+ if (options?.signal?.aborted) {
41
+ resolve({
42
+ ok: false,
43
+ error: new types_js_1.InputStreamTimeoutError(streamId, options.timeoutMs ?? 0),
44
+ });
45
+ return;
46
+ }
47
+ // Pick up any buffered send that arrived before this waiter.
48
+ const buffered = this.pendingSends.get(streamId);
49
+ if (buffered && buffered.length > 0) {
50
+ const next = buffered.shift();
51
+ if (buffered.length === 0)
52
+ this.pendingSends.delete(streamId);
53
+ resolve({ ok: true, output: next });
54
+ return;
55
+ }
56
+ const waiter = {
57
+ resolve,
58
+ signal: options?.signal,
59
+ };
60
+ if (options?.timeoutMs !== undefined) {
61
+ waiter.timer = setTimeout(() => {
62
+ this.removeWaiter(streamId, waiter);
63
+ resolve({
64
+ ok: false,
65
+ error: new types_js_1.InputStreamTimeoutError(streamId, options.timeoutMs),
66
+ });
67
+ }, options.timeoutMs);
68
+ }
69
+ if (options?.signal) {
70
+ const abortHandler = () => {
71
+ this.removeWaiter(streamId, waiter);
72
+ if (waiter.timer)
73
+ clearTimeout(waiter.timer);
74
+ resolve({
75
+ ok: false,
76
+ error: new types_js_1.InputStreamTimeoutError(streamId, options.timeoutMs ?? 0),
77
+ });
78
+ };
79
+ waiter.abortHandler = abortHandler;
80
+ options.signal.addEventListener("abort", abortHandler, { once: true });
81
+ }
82
+ if (!this.onceWaiters.has(streamId)) {
83
+ this.onceWaiters.set(streamId, []);
84
+ }
85
+ this.onceWaiters.get(streamId).push(waiter);
86
+ });
87
+ }
88
+ peek(streamId) {
89
+ return this.latest.get(streamId);
90
+ }
91
+ lastSeqNum(streamId) {
92
+ return this.lastSeqNums.get(streamId);
93
+ }
94
+ setLastSeqNum(streamId, seqNum) {
95
+ this.lastSeqNums.set(streamId, seqNum);
96
+ }
97
+ shiftBuffer(_streamId) {
98
+ return false;
99
+ }
100
+ disconnectStream(_streamId) { }
101
+ clearHandlers() {
102
+ this.handlers.clear();
103
+ }
104
+ reset() {
105
+ // Cancel any pending waiters to avoid dangling promises leaking between tests
106
+ for (const waiters of this.onceWaiters.values()) {
107
+ for (const w of waiters) {
108
+ if (w.timer)
109
+ clearTimeout(w.timer);
110
+ if (w.signal && w.abortHandler) {
111
+ w.signal.removeEventListener("abort", w.abortHandler);
112
+ }
113
+ }
114
+ }
115
+ this.onceWaiters.clear();
116
+ this.handlers.clear();
117
+ this.latest.clear();
118
+ this.lastSeqNums.clear();
119
+ this.pendingSends.clear();
120
+ }
121
+ disconnect() {
122
+ this.reset();
123
+ }
124
+ connectTail(_runId, _fromSeq) { }
125
+ // ── Test driver API (not part of InputStreamManager interface) ──────────
126
+ /**
127
+ * Push data onto an input stream. Resolves pending `once()` waiters
128
+ * and fires all `on()` handlers (awaiting async handlers).
129
+ */
130
+ async __sendFromTest(streamId, data) {
131
+ this.latest.set(streamId, data);
132
+ const waiters = this.onceWaiters.get(streamId);
133
+ const handlers = this.handlers.get(streamId);
134
+ const hasWaiters = waiters && waiters.length > 0;
135
+ const hasHandlers = handlers && handlers.size > 0;
136
+ // If nothing is listening yet, buffer so the next `.once()` call picks it up.
137
+ if (!hasWaiters && !hasHandlers) {
138
+ if (!this.pendingSends.has(streamId)) {
139
+ this.pendingSends.set(streamId, []);
140
+ }
141
+ this.pendingSends.get(streamId).push(data);
142
+ return;
143
+ }
144
+ if (hasWaiters) {
145
+ // Drain every pending once() waiter — this mirrors the real manager's
146
+ // behavior where the stream tail delivers the same record to all listeners.
147
+ const pending = waiters.splice(0);
148
+ for (const w of pending) {
149
+ if (w.timer)
150
+ clearTimeout(w.timer);
151
+ if (w.signal && w.abortHandler) {
152
+ w.signal.removeEventListener("abort", w.abortHandler);
153
+ }
154
+ w.resolve({ ok: true, output: data });
155
+ }
156
+ }
157
+ if (hasHandlers) {
158
+ await Promise.all(Array.from(handlers).map((h) => Promise.resolve().then(() => h(data))));
159
+ }
160
+ }
161
+ /**
162
+ * Immediately resolve every pending `once()` waiter for a stream with a
163
+ * timeout error. Used to simulate closed streams (e.g. `exitAfterPreloadIdle`).
164
+ */
165
+ __closeFromTest(streamId) {
166
+ const waiters = this.onceWaiters.get(streamId);
167
+ if (!waiters)
168
+ return;
169
+ const pending = waiters.splice(0);
170
+ for (const w of pending) {
171
+ if (w.timer)
172
+ clearTimeout(w.timer);
173
+ if (w.signal && w.abortHandler) {
174
+ w.signal.removeEventListener("abort", w.abortHandler);
175
+ }
176
+ w.resolve({
177
+ ok: false,
178
+ error: new types_js_1.InputStreamTimeoutError(streamId, 0),
179
+ });
180
+ }
181
+ }
182
+ removeWaiter(streamId, waiter) {
183
+ const waiters = this.onceWaiters.get(streamId);
184
+ if (!waiters)
185
+ return;
186
+ const idx = waiters.indexOf(waiter);
187
+ if (idx >= 0)
188
+ waiters.splice(idx, 1);
189
+ }
190
+ }
191
+ exports.TestInputStreamManager = TestInputStreamManager;
192
+ //# sourceMappingURL=test-input-stream-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-input-stream-manager.js","sourceRoot":"","sources":["../../../../src/v3/test/test-input-stream-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { RealtimeStreamInstance, RealtimeStreamOperationOptions, RealtimeStreamsManager } from "../realtimeStreams/types.js";
2
+ /**
3
+ * In-memory implementation of `RealtimeStreamsManager` for unit tests.
4
+ * Collects every chunk that tasks write via `pipe()` or `append()` into
5
+ * per-stream buffers that tests can inspect.
6
+ *
7
+ * Use this alongside {@link runInMockTaskContext} — not directly.
8
+ */
9
+ type WriteListener = (key: string, chunk: unknown) => void;
10
+ export declare class TestRealtimeStreamsManager implements RealtimeStreamsManager {
11
+ private buffers;
12
+ private pipeWaits;
13
+ private writeListeners;
14
+ pipe<T>(key: string, source: AsyncIterable<T> | ReadableStream<T>, _options?: RealtimeStreamOperationOptions): RealtimeStreamInstance<T>;
15
+ append<TPart extends BodyInit>(key: string, part: TPart, _options?: RealtimeStreamOperationOptions): Promise<void>;
16
+ /**
17
+ * Register a listener fired for every chunk written to any stream.
18
+ * Returns an unsubscribe function.
19
+ *
20
+ * Intended for test harnesses that need to react to writes synchronously
21
+ * (e.g. resolving a "turn complete" latch).
22
+ */
23
+ onWrite(listener: WriteListener): () => void;
24
+ private notify;
25
+ /**
26
+ * Return all chunks written to the given stream key in order of write.
27
+ */
28
+ __chunksFromTest<T = unknown>(key: string): T[];
29
+ /**
30
+ * Return all chunks across every stream, keyed by stream id.
31
+ */
32
+ __allChunksFromTest(): Record<string, unknown[]>;
33
+ /**
34
+ * Clear the buffer for a specific stream or all streams.
35
+ */
36
+ __clearFromTest(key?: string): void;
37
+ reset(): void;
38
+ private getBuffer;
39
+ }
40
+ export {};
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestRealtimeStreamsManager = void 0;
4
+ const asyncIterableStream_js_1 = require("../streams/asyncIterableStream.js");
5
+ class TestRealtimeStreamsManager {
6
+ buffers = new Map();
7
+ pipeWaits = new Map();
8
+ writeListeners = new Set();
9
+ pipe(key, source, _options) {
10
+ const buffer = this.getBuffer(key);
11
+ const self = this;
12
+ // Eagerly drain the source in the background so chunks land in the
13
+ // buffer + notify listeners even when the caller never consumes the
14
+ // returned stream. This mirrors the real SDK behavior: `streams.writer`
15
+ // awaits `instance.wait()`, it doesn't read the returned stream.
16
+ //
17
+ // The source is read ONCE (into a chunks array) and replayed into a
18
+ // ReadableStream so the caller can still consume it if they want.
19
+ const readChunks = [];
20
+ let resolveDone;
21
+ const done = new Promise((resolve) => {
22
+ resolveDone = resolve;
23
+ });
24
+ (async () => {
25
+ try {
26
+ const iter = source instanceof ReadableStream
27
+ ? (async function* () {
28
+ const reader = source.getReader();
29
+ try {
30
+ while (true) {
31
+ const { done: d, value } = await reader.read();
32
+ if (d)
33
+ return;
34
+ yield value;
35
+ }
36
+ }
37
+ finally {
38
+ reader.releaseLock();
39
+ }
40
+ })()
41
+ : source;
42
+ for await (const chunk of iter) {
43
+ readChunks.push(chunk);
44
+ buffer.push(chunk);
45
+ self.notify(key, chunk);
46
+ }
47
+ }
48
+ catch {
49
+ // Swallow — tests can inspect what made it into the buffer
50
+ }
51
+ finally {
52
+ resolveDone();
53
+ }
54
+ })();
55
+ const replayStream = (async function* () {
56
+ // Wait for all chunks to be drained, then replay from our snapshot
57
+ await done;
58
+ for (const chunk of readChunks)
59
+ yield chunk;
60
+ })();
61
+ const wrappedStream = (0, asyncIterableStream_js_1.createAsyncIterableStreamFromAsyncIterable)(replayStream);
62
+ if (!this.pipeWaits.has(key))
63
+ this.pipeWaits.set(key, []);
64
+ this.pipeWaits.get(key).push(done);
65
+ return {
66
+ wait: () => done.then(() => ({})),
67
+ get stream() {
68
+ return wrappedStream;
69
+ },
70
+ };
71
+ }
72
+ async append(key, part, _options) {
73
+ this.getBuffer(key).push(part);
74
+ this.notify(key, part);
75
+ }
76
+ /**
77
+ * Register a listener fired for every chunk written to any stream.
78
+ * Returns an unsubscribe function.
79
+ *
80
+ * Intended for test harnesses that need to react to writes synchronously
81
+ * (e.g. resolving a "turn complete" latch).
82
+ */
83
+ onWrite(listener) {
84
+ this.writeListeners.add(listener);
85
+ return () => {
86
+ this.writeListeners.delete(listener);
87
+ };
88
+ }
89
+ notify(key, chunk) {
90
+ for (const listener of this.writeListeners) {
91
+ try {
92
+ listener(key, chunk);
93
+ }
94
+ catch {
95
+ // Never let a listener error break stream writes
96
+ }
97
+ }
98
+ }
99
+ // ── Test driver API (not part of RealtimeStreamsManager interface) ──────
100
+ /**
101
+ * Return all chunks written to the given stream key in order of write.
102
+ */
103
+ __chunksFromTest(key) {
104
+ return (this.buffers.get(key) ?? []).slice();
105
+ }
106
+ /**
107
+ * Return all chunks across every stream, keyed by stream id.
108
+ */
109
+ __allChunksFromTest() {
110
+ const result = {};
111
+ for (const [key, chunks] of this.buffers.entries()) {
112
+ result[key] = chunks.slice();
113
+ }
114
+ return result;
115
+ }
116
+ /**
117
+ * Clear the buffer for a specific stream or all streams.
118
+ */
119
+ __clearFromTest(key) {
120
+ if (key === undefined) {
121
+ this.buffers.clear();
122
+ }
123
+ else {
124
+ this.buffers.delete(key);
125
+ }
126
+ }
127
+ reset() {
128
+ this.buffers.clear();
129
+ this.pipeWaits.clear();
130
+ }
131
+ getBuffer(key) {
132
+ if (!this.buffers.has(key)) {
133
+ this.buffers.set(key, []);
134
+ }
135
+ return this.buffers.get(key);
136
+ }
137
+ }
138
+ exports.TestRealtimeStreamsManager = TestRealtimeStreamsManager;
139
+ //# sourceMappingURL=test-realtime-streams-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-realtime-streams-manager.js","sourceRoot":"","sources":["../../../../src/v3/test/test-realtime-streams-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { DeserializedJson } from "../../schemas/json.js";
2
+ import type { AsyncIterableStream } from "../streams/asyncIterableStream.js";
3
+ import type { RunMetadataManager, RunMetadataUpdater } from "../runMetadata/types.js";
4
+ /**
5
+ * In-memory implementation of `RunMetadataManager` for unit tests.
6
+ *
7
+ * Just stores metadata in a Map — no API calls, no queue. Good enough
8
+ * for tests that read/write metadata via `runMetadata.getKey()` /
9
+ * `runMetadata.set()`, including the IDLE_TIMEOUT and TURN_TIMEOUT
10
+ * checks inside `chat.agent()`.
11
+ */
12
+ export declare class TestRunMetadataManager implements RunMetadataManager {
13
+ private store;
14
+ enterWithMetadata(metadata: Record<string, DeserializedJson>): void;
15
+ current(): Record<string, DeserializedJson> | undefined;
16
+ getKey(key: string): DeserializedJson | undefined;
17
+ set(key: string, value: DeserializedJson): this;
18
+ del(key: string): this;
19
+ append(key: string, value: DeserializedJson): this;
20
+ remove(key: string, value: DeserializedJson): this;
21
+ increment(key: string, value: number): this;
22
+ decrement(key: string, value: number): this;
23
+ update(metadata: Record<string, DeserializedJson>): this;
24
+ flush(): Promise<void>;
25
+ refresh(): Promise<void>;
26
+ stream<T>(_key: string, value: AsyncIterable<T> | ReadableStream<T>): Promise<AsyncIterable<T>>;
27
+ fetchStream<T>(_key: string): Promise<AsyncIterableStream<T>>;
28
+ get parent(): RunMetadataUpdater;
29
+ get root(): RunMetadataUpdater;
30
+ reset(): void;
31
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestRunMetadataManager = void 0;
4
+ /**
5
+ * In-memory implementation of `RunMetadataManager` for unit tests.
6
+ *
7
+ * Just stores metadata in a Map — no API calls, no queue. Good enough
8
+ * for tests that read/write metadata via `runMetadata.getKey()` /
9
+ * `runMetadata.set()`, including the IDLE_TIMEOUT and TURN_TIMEOUT
10
+ * checks inside `chat.agent()`.
11
+ */
12
+ class TestRunMetadataManager {
13
+ store = {};
14
+ enterWithMetadata(metadata) {
15
+ this.store = { ...metadata };
16
+ }
17
+ current() {
18
+ return { ...this.store };
19
+ }
20
+ getKey(key) {
21
+ return this.store[key];
22
+ }
23
+ set(key, value) {
24
+ this.store[key] = value;
25
+ return this;
26
+ }
27
+ del(key) {
28
+ delete this.store[key];
29
+ return this;
30
+ }
31
+ append(key, value) {
32
+ const existing = this.store[key];
33
+ if (Array.isArray(existing)) {
34
+ existing.push(value);
35
+ }
36
+ else {
37
+ this.store[key] = [value];
38
+ }
39
+ return this;
40
+ }
41
+ remove(key, value) {
42
+ const existing = this.store[key];
43
+ if (Array.isArray(existing)) {
44
+ this.store[key] = existing.filter((v) => v !== value);
45
+ }
46
+ return this;
47
+ }
48
+ increment(key, value) {
49
+ const existing = this.store[key];
50
+ const current = typeof existing === "number" ? existing : 0;
51
+ this.store[key] = current + value;
52
+ return this;
53
+ }
54
+ decrement(key, value) {
55
+ return this.increment(key, -value);
56
+ }
57
+ update(metadata) {
58
+ this.store = { ...metadata };
59
+ return this;
60
+ }
61
+ async flush() { }
62
+ async refresh() { }
63
+ async stream(_key, value) {
64
+ return value;
65
+ }
66
+ async fetchStream(_key) {
67
+ // Return an empty async iterable — tests can override if needed
68
+ const empty = {
69
+ [Symbol.asyncIterator]: () => ({
70
+ next: () => Promise.resolve({ done: true, value: undefined }),
71
+ }),
72
+ };
73
+ return empty;
74
+ }
75
+ get parent() {
76
+ return this;
77
+ }
78
+ get root() {
79
+ return this;
80
+ }
81
+ reset() {
82
+ this.store = {};
83
+ }
84
+ }
85
+ exports.TestRunMetadataManager = TestRunMetadataManager;
86
+ //# sourceMappingURL=test-run-metadata-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run-metadata-manager.js","sourceRoot":"","sources":["../../../../src/v3/test/test-run-metadata-manager.ts"],"names":[],"mappings":"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"}
@@ -89,10 +89,7 @@ class TriggerTracer {
89
89
  throw e;
90
90
  }
91
91
  if (!spanEnded) {
92
- if (typeof e === "string" || e instanceof Error) {
93
- span.recordException(e);
94
- }
95
- span.setStatus({ code: api_1.SpanStatusCode.ERROR });
92
+ (0, utils_js_1.recordSpanException)(span, e);
96
93
  }
97
94
  throw e;
98
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../src/v3/tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../src/v3/tracer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "0.0.0-chat-prerelease-20260415164455";
4
+ exports.VERSION = "0.0.0-chat-prerelease-20260418083610";
5
5
  //# sourceMappingURL=version.js.map
@@ -39,6 +39,12 @@ export declare class CompleteTaskWithOutput extends Error {
39
39
  constructor(output?: unknown);
40
40
  }
41
41
  export declare function isCompleteTaskWithOutput(error: unknown): error is CompleteTaskWithOutput;
42
+ /** Truncate a stack trace to at most MAX_STACK_FRAMES frames, keeping
43
+ * the top (closest to throw) and bottom (entry points) frames.
44
+ * Individual lines (including message lines) are capped at MAX_STACK_LINE_LENGTH
45
+ * to prevent OOM from huge error messages embedded in the stack. */
46
+ export declare function truncateStack(stack: string | undefined): string;
47
+ export declare function truncateMessage(message: string | undefined): string;
42
48
  export declare function parseError(error: unknown): TaskRunError;
43
49
  export declare function createErrorTaskError(error: TaskRunError): any;
44
50
  export declare function createJsonErrorObject(error: TaskRunError): SerializedError;