@trigger.dev/core 0.0.0-prerelease-local-bundle-20260825080823 → 0.0.0-prerelease-20260827143549
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/runStream.d.ts +3 -0
- package/dist/commonjs/v3/apiClient/runStream.js +1 -0
- package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
- package/dist/commonjs/v3/apiClient/runStream.test.js +1 -0
- package/dist/commonjs/v3/apiClient/runStream.test.js.map +1 -1
- package/dist/commonjs/v3/isomorphic/friendlyId.d.ts +3 -0
- package/dist/commonjs/v3/isomorphic/friendlyId.js +6 -0
- package/dist/commonjs/v3/isomorphic/friendlyId.js.map +1 -1
- package/dist/commonjs/v3/isomorphic/friendlyId.test.js +14 -0
- package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +54 -54
- package/dist/commonjs/v3/schemas/api.d.ts +10 -0
- package/dist/commonjs/v3/schemas/api.js +7 -3
- package/dist/commonjs/v3/schemas/api.js.map +1 -1
- package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
- package/dist/commonjs/v3/session-streams-api.js +1 -0
- package/dist/commonjs/v3/session-streams-api.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/index.d.ts +9 -1
- package/dist/commonjs/v3/sessionStreams/index.js +38 -0
- package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/manager.d.ts +27 -2
- package/dist/commonjs/v3/sessionStreams/manager.js +202 -108
- package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/manager.test.js +253 -0
- package/dist/commonjs/v3/sessionStreams/manager.test.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/noopManager.d.ts +9 -1
- package/dist/commonjs/v3/sessionStreams/noopManager.js +18 -0
- package/dist/commonjs/v3/sessionStreams/noopManager.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/router.d.ts +241 -0
- package/dist/commonjs/v3/sessionStreams/router.js +402 -0
- package/dist/commonjs/v3/sessionStreams/router.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/router.test.d.ts +1 -0
- package/dist/commonjs/v3/sessionStreams/router.test.js +463 -0
- package/dist/commonjs/v3/sessionStreams/router.test.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/types.d.ts +42 -6
- package/dist/commonjs/v3/sessionStreams/wireProtocol.d.ts +11 -0
- package/dist/commonjs/v3/sessionStreams/wireProtocol.js +12 -1
- package/dist/commonjs/v3/sessionStreams/wireProtocol.js.map +1 -1
- package/dist/commonjs/v3/test/mock-task-context.d.ts +4 -1
- package/dist/commonjs/v3/test/mock-task-context.js +2 -2
- package/dist/commonjs/v3/test/mock-task-context.js.map +1 -1
- package/dist/commonjs/v3/test/session-waitpoint-backend.js +17 -3
- package/dist/commonjs/v3/test/session-waitpoint-backend.js.map +1 -1
- package/dist/commonjs/v3/test/test-session-stream-manager.d.ts +13 -2
- package/dist/commonjs/v3/test/test-session-stream-manager.js +173 -67
- 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/runStream.d.ts +3 -0
- package/dist/esm/v3/apiClient/runStream.js +1 -0
- package/dist/esm/v3/apiClient/runStream.js.map +1 -1
- package/dist/esm/v3/apiClient/runStream.test.js +1 -0
- package/dist/esm/v3/apiClient/runStream.test.js.map +1 -1
- package/dist/esm/v3/isomorphic/friendlyId.d.ts +3 -0
- package/dist/esm/v3/isomorphic/friendlyId.js +5 -0
- package/dist/esm/v3/isomorphic/friendlyId.js.map +1 -1
- package/dist/esm/v3/isomorphic/friendlyId.test.js +15 -1
- package/dist/esm/v3/isomorphic/friendlyId.test.js.map +1 -1
- package/dist/esm/v3/schemas/api.d.ts +10 -0
- package/dist/esm/v3/schemas/api.js +4 -0
- package/dist/esm/v3/schemas/api.js.map +1 -1
- package/dist/esm/v3/session-streams-api.d.ts +1 -0
- package/dist/esm/v3/session-streams-api.js +1 -0
- package/dist/esm/v3/session-streams-api.js.map +1 -1
- package/dist/esm/v3/sessionStreams/index.d.ts +9 -1
- package/dist/esm/v3/sessionStreams/index.js +38 -0
- package/dist/esm/v3/sessionStreams/index.js.map +1 -1
- package/dist/esm/v3/sessionStreams/manager.d.ts +27 -2
- package/dist/esm/v3/sessionStreams/manager.js +202 -108
- package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
- package/dist/esm/v3/sessionStreams/manager.test.js +253 -0
- package/dist/esm/v3/sessionStreams/manager.test.js.map +1 -1
- package/dist/esm/v3/sessionStreams/noopManager.d.ts +9 -1
- package/dist/esm/v3/sessionStreams/noopManager.js +18 -0
- package/dist/esm/v3/sessionStreams/noopManager.js.map +1 -1
- package/dist/esm/v3/sessionStreams/router.d.ts +241 -0
- package/dist/esm/v3/sessionStreams/router.js +398 -0
- package/dist/esm/v3/sessionStreams/router.js.map +1 -0
- package/dist/esm/v3/sessionStreams/router.test.d.ts +1 -0
- package/dist/esm/v3/sessionStreams/router.test.js +461 -0
- package/dist/esm/v3/sessionStreams/router.test.js.map +1 -0
- package/dist/esm/v3/sessionStreams/types.d.ts +42 -6
- package/dist/esm/v3/sessionStreams/wireProtocol.d.ts +11 -0
- package/dist/esm/v3/sessionStreams/wireProtocol.js +11 -0
- package/dist/esm/v3/sessionStreams/wireProtocol.js.map +1 -1
- package/dist/esm/v3/test/mock-task-context.d.ts +4 -1
- package/dist/esm/v3/test/mock-task-context.js +2 -2
- package/dist/esm/v3/test/mock-task-context.js.map +1 -1
- package/dist/esm/v3/test/session-waitpoint-backend.js +17 -3
- package/dist/esm/v3/test/session-waitpoint-backend.js.map +1 -1
- package/dist/esm/v3/test/test-session-stream-manager.d.ts +13 -2
- package/dist/esm/v3/test/test-session-stream-manager.js +173 -67
- package/dist/esm/v3/test/test-session-stream-manager.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
|
@@ -21,18 +21,6 @@ class StandardSessionStreamManager {
|
|
|
21
21
|
handlers = new Map();
|
|
22
22
|
onceWaiters = new Map();
|
|
23
23
|
buffer = new Map();
|
|
24
|
-
// Parallel to `buffer`: the SSE seq_num of each buffered record. Same
|
|
25
|
-
// length and order as `buffer[key]`. Used so that when `once()` shifts
|
|
26
|
-
// a buffered record into a waiter, the cursor (`lastDispatchedSeqNums`)
|
|
27
|
-
// can advance to that record's seq. Kept as a separate map so the
|
|
28
|
-
// existing `peek()` shape (returns `unknown`) stays unchanged.
|
|
29
|
-
//
|
|
30
|
-
// Entries are `number | undefined` so the array stays length-locked
|
|
31
|
-
// with `buffer` even if a record arrives without a parseable seq —
|
|
32
|
-
// shifting `undefined` is just a no-op for the cursor advance, but
|
|
33
|
-
// the slot still gets consumed. Drifting lengths would map seq_nums
|
|
34
|
-
// to the wrong records on subsequent shifts.
|
|
35
|
-
bufferSeqNums = new Map();
|
|
36
24
|
tails = new Map();
|
|
37
25
|
// Per-stream lower-bound timestamp filter. When set, records whose
|
|
38
26
|
// SSE timestamp is <= the bound are dropped before dispatch — used by
|
|
@@ -48,14 +36,16 @@ class StandardSessionStreamManager {
|
|
|
48
36
|
// that's already being delivered out-of-band via the waitpoint.
|
|
49
37
|
explicitlyDisconnected = new Set();
|
|
50
38
|
seqNums = new Map();
|
|
51
|
-
//
|
|
52
|
-
//
|
|
39
|
+
// Sequence numbers for records that were delivered but not consumed.
|
|
40
|
+
// Kept separately from `buffer` so the committed cursor can be calculated
|
|
41
|
+
// without depending on buffer traversal.
|
|
42
|
+
unconsumedSeqNums = new Map();
|
|
43
|
+
// High-water mark of seq_nums that have been *consumed* (delivered to a
|
|
44
|
+
// once() waiter or shifted off the buffer into a once() caller) on a channel.
|
|
53
45
|
// Distinct from `seqNums`, which advances whenever any record is
|
|
54
46
|
// received from SSE — even ones still sitting in the local buffer.
|
|
55
|
-
//
|
|
56
|
-
// turn-complete control record
|
|
57
|
-
// next worker boot can resume `.in` from this point without
|
|
58
|
-
// re-delivering already-handled user messages.
|
|
47
|
+
// `lastDispatchedSeqNum()` clamps this behind any unconsumed barrier before
|
|
48
|
+
// it is persisted on a turn-complete control record.
|
|
59
49
|
lastDispatchedSeqNums = new Map();
|
|
60
50
|
// Reconnect attempt counter per key. Drives the exponential backoff
|
|
61
51
|
// applied by `#ensureTailConnected`'s `.finally` so a persistent
|
|
@@ -70,6 +60,16 @@ class StandardSessionStreamManager {
|
|
|
70
60
|
this.debug = debug;
|
|
71
61
|
}
|
|
72
62
|
on(sessionId, io, handler) {
|
|
63
|
+
return this.#register(sessionId, io, { kind: "data", fn: handler });
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Register a handler that receives the full record, including its sequence
|
|
67
|
+
* number. Same consume semantics as {@link on}: returning `true` consumes.
|
|
68
|
+
*/
|
|
69
|
+
onRecord(sessionId, io, handler) {
|
|
70
|
+
return this.#register(sessionId, io, { kind: "record", fn: handler });
|
|
71
|
+
}
|
|
72
|
+
#register(sessionId, io, handler) {
|
|
73
73
|
const key = keyFor(sessionId, io);
|
|
74
74
|
let handlerSet = this.handlers.get(key);
|
|
75
75
|
if (!handlerSet) {
|
|
@@ -94,31 +94,23 @@ class StandardSessionStreamManager {
|
|
|
94
94
|
// duplicating turns.
|
|
95
95
|
const buffered = this.buffer.get(key);
|
|
96
96
|
if (buffered && buffered.length > 0) {
|
|
97
|
-
const seqList = this.bufferSeqNums.get(key) ?? [];
|
|
98
97
|
const keptRecords = [];
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const keptSeqNums = [];
|
|
102
|
-
for (let i = 0; i < buffered.length; i++) {
|
|
103
|
-
const consumed = this.#invokeHandler(handler, buffered[i]);
|
|
98
|
+
for (const record of buffered) {
|
|
99
|
+
const consumed = this.#invokeHandler(handler, record);
|
|
104
100
|
if (consumed) {
|
|
105
|
-
|
|
106
|
-
if (s !== undefined)
|
|
107
|
-
this.#advanceLastDispatched(key, s);
|
|
101
|
+
this.#advanceLastDispatched(key, record.seqNum);
|
|
108
102
|
}
|
|
109
103
|
else {
|
|
110
|
-
keptRecords.push(
|
|
111
|
-
keptSeqNums.push(seqList[i]);
|
|
104
|
+
keptRecords.push(record);
|
|
112
105
|
}
|
|
113
106
|
}
|
|
114
107
|
if (keptRecords.length > 0) {
|
|
115
108
|
this.buffer.set(key, keptRecords);
|
|
116
|
-
this.bufferSeqNums.set(key, keptSeqNums);
|
|
117
109
|
}
|
|
118
110
|
else {
|
|
119
111
|
this.buffer.delete(key);
|
|
120
|
-
this.bufferSeqNums.delete(key);
|
|
121
112
|
}
|
|
113
|
+
this.#drainOnceWaitersFromBuffer(key);
|
|
122
114
|
}
|
|
123
115
|
return {
|
|
124
116
|
off: () => {
|
|
@@ -130,27 +122,39 @@ class StandardSessionStreamManager {
|
|
|
130
122
|
};
|
|
131
123
|
}
|
|
132
124
|
once(sessionId, io, options) {
|
|
125
|
+
const recordPromise = this.onceRecord(sessionId, io, options);
|
|
126
|
+
return new types_js_1.InputStreamOncePromise((resolve, reject) => {
|
|
127
|
+
recordPromise.then((result) => {
|
|
128
|
+
resolve(result.ok ? { ok: true, output: result.output.data } : result);
|
|
129
|
+
}, reject);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
onceRecord(sessionId, io, options) {
|
|
133
|
+
return this.#onceRecord(sessionId, io, undefined, options);
|
|
134
|
+
}
|
|
135
|
+
onceRecordWhere(sessionId, io, predicate, options) {
|
|
136
|
+
return this.#onceRecord(sessionId, io, predicate, options);
|
|
137
|
+
}
|
|
138
|
+
#onceRecord(sessionId, io, predicate, options) {
|
|
133
139
|
const key = keyFor(sessionId, io);
|
|
140
|
+
if (options?.timeoutMs === 0) {
|
|
141
|
+
const record = this.#takeBufferedRecord(key, predicate);
|
|
142
|
+
return new types_js_1.InputStreamOncePromise((resolve) => {
|
|
143
|
+
resolve(record
|
|
144
|
+
? { ok: true, output: record }
|
|
145
|
+
: { ok: false, error: new types_js_1.InputStreamTimeoutError(key, 0) });
|
|
146
|
+
});
|
|
147
|
+
}
|
|
134
148
|
this.explicitlyDisconnected.delete(key);
|
|
135
149
|
this.#ensureTailConnected(sessionId, io);
|
|
136
|
-
const
|
|
137
|
-
if (
|
|
138
|
-
const data = buffered.shift();
|
|
139
|
-
const seqList = this.bufferSeqNums.get(key);
|
|
140
|
-
const shiftedSeqNum = seqList?.shift();
|
|
141
|
-
if (buffered.length === 0) {
|
|
142
|
-
this.buffer.delete(key);
|
|
143
|
-
this.bufferSeqNums.delete(key);
|
|
144
|
-
}
|
|
145
|
-
if (shiftedSeqNum !== undefined) {
|
|
146
|
-
this.#advanceLastDispatched(key, shiftedSeqNum);
|
|
147
|
-
}
|
|
150
|
+
const record = this.#takeBufferedRecord(key, predicate);
|
|
151
|
+
if (record) {
|
|
148
152
|
return new types_js_1.InputStreamOncePromise((resolve) => {
|
|
149
|
-
resolve({ ok: true, output:
|
|
153
|
+
resolve({ ok: true, output: record });
|
|
150
154
|
});
|
|
151
155
|
}
|
|
152
156
|
return new types_js_1.InputStreamOncePromise((resolve, reject) => {
|
|
153
|
-
const waiter = { resolve, reject };
|
|
157
|
+
const waiter = { resolve, reject, predicate };
|
|
154
158
|
if (options?.signal) {
|
|
155
159
|
if (options.signal.aborted) {
|
|
156
160
|
reject(new Error("Aborted"));
|
|
@@ -183,11 +187,26 @@ class StandardSessionStreamManager {
|
|
|
183
187
|
waiters.push(waiter);
|
|
184
188
|
});
|
|
185
189
|
}
|
|
190
|
+
#takeBufferedRecord(key, predicate) {
|
|
191
|
+
const buffered = this.buffer.get(key);
|
|
192
|
+
if (!buffered || buffered.length === 0)
|
|
193
|
+
return undefined;
|
|
194
|
+
const record = buffered[0];
|
|
195
|
+
if (predicate && !predicate(record))
|
|
196
|
+
return undefined;
|
|
197
|
+
buffered.shift();
|
|
198
|
+
if (buffered.length === 0) {
|
|
199
|
+
this.buffer.delete(key);
|
|
200
|
+
}
|
|
201
|
+
this.#advanceLastDispatched(key, record.seqNum);
|
|
202
|
+
this.#drainOnceWaitersFromBuffer(key);
|
|
203
|
+
return record;
|
|
204
|
+
}
|
|
186
205
|
peek(sessionId, io) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return
|
|
206
|
+
return this.peekRecord(sessionId, io)?.data;
|
|
207
|
+
}
|
|
208
|
+
peekRecord(sessionId, io) {
|
|
209
|
+
return this.buffer.get(keyFor(sessionId, io))?.[0];
|
|
191
210
|
}
|
|
192
211
|
lastSeqNum(sessionId, io) {
|
|
193
212
|
return this.seqNums.get(keyFor(sessionId, io));
|
|
@@ -199,18 +218,65 @@ class StandardSessionStreamManager {
|
|
|
199
218
|
this.seqNums.set(key, seqNum);
|
|
200
219
|
}
|
|
201
220
|
}
|
|
221
|
+
consumeRecord(sessionId, io, seqNum) {
|
|
222
|
+
const key = keyFor(sessionId, io);
|
|
223
|
+
const buffered = this.buffer.get(key);
|
|
224
|
+
const index = buffered?.findIndex((record) => record.seqNum === seqNum) ?? -1;
|
|
225
|
+
if (buffered && index !== -1) {
|
|
226
|
+
buffered.splice(index, 1);
|
|
227
|
+
if (buffered.length === 0) {
|
|
228
|
+
this.buffer.delete(key);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
this.#advanceLastDispatched(key, seqNum);
|
|
232
|
+
this.#drainOnceWaitersFromBuffer(key);
|
|
233
|
+
}
|
|
202
234
|
lastDispatchedSeqNum(sessionId, io) {
|
|
203
|
-
|
|
235
|
+
const key = keyFor(sessionId, io);
|
|
236
|
+
const highWatermark = this.lastDispatchedSeqNums.get(key);
|
|
237
|
+
if (highWatermark === undefined)
|
|
238
|
+
return undefined;
|
|
239
|
+
const unconsumedSeqNums = this.unconsumedSeqNums.get(key);
|
|
240
|
+
if (!unconsumedSeqNums || unconsumedSeqNums.size === 0)
|
|
241
|
+
return highWatermark;
|
|
242
|
+
let earliestUnconsumedSeqNum = Infinity;
|
|
243
|
+
for (const seqNum of unconsumedSeqNums) {
|
|
244
|
+
earliestUnconsumedSeqNum = Math.min(earliestUnconsumedSeqNum, seqNum);
|
|
245
|
+
}
|
|
246
|
+
const safeCursor = Math.min(highWatermark, earliestUnconsumedSeqNum - 1);
|
|
247
|
+
return safeCursor >= 0 ? safeCursor : undefined;
|
|
204
248
|
}
|
|
205
249
|
setLastDispatchedSeqNum(sessionId, io, seqNum) {
|
|
250
|
+
if (!Number.isFinite(seqNum))
|
|
251
|
+
return;
|
|
206
252
|
this.#advanceLastDispatched(keyFor(sessionId, io), seqNum);
|
|
207
253
|
}
|
|
208
254
|
#advanceLastDispatched(key, seqNum) {
|
|
255
|
+
this.#removeUnconsumedRecord(key, seqNum);
|
|
256
|
+
if (!Number.isFinite(seqNum))
|
|
257
|
+
return;
|
|
209
258
|
const current = this.lastDispatchedSeqNums.get(key);
|
|
210
259
|
if (current === undefined || seqNum > current) {
|
|
211
260
|
this.lastDispatchedSeqNums.set(key, seqNum);
|
|
212
261
|
}
|
|
213
262
|
}
|
|
263
|
+
#markUnconsumedRecord(key, seqNum) {
|
|
264
|
+
if (!Number.isFinite(seqNum))
|
|
265
|
+
return;
|
|
266
|
+
let unconsumedSeqNums = this.unconsumedSeqNums.get(key);
|
|
267
|
+
if (!unconsumedSeqNums) {
|
|
268
|
+
unconsumedSeqNums = new Set();
|
|
269
|
+
this.unconsumedSeqNums.set(key, unconsumedSeqNums);
|
|
270
|
+
}
|
|
271
|
+
unconsumedSeqNums.add(seqNum);
|
|
272
|
+
}
|
|
273
|
+
#removeUnconsumedRecord(key, seqNum) {
|
|
274
|
+
const unconsumedSeqNums = this.unconsumedSeqNums.get(key);
|
|
275
|
+
unconsumedSeqNums?.delete(seqNum);
|
|
276
|
+
if (unconsumedSeqNums?.size === 0) {
|
|
277
|
+
this.unconsumedSeqNums.delete(key);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
214
280
|
setMinTimestamp(sessionId, io, minTimestamp) {
|
|
215
281
|
const key = keyFor(sessionId, io);
|
|
216
282
|
if (minTimestamp === undefined) {
|
|
@@ -224,16 +290,12 @@ class StandardSessionStreamManager {
|
|
|
224
290
|
const key = keyFor(sessionId, io);
|
|
225
291
|
const buffered = this.buffer.get(key);
|
|
226
292
|
if (buffered && buffered.length > 0) {
|
|
227
|
-
buffered.shift();
|
|
228
|
-
const seqList = this.bufferSeqNums.get(key);
|
|
229
|
-
const shiftedSeqNum = seqList?.shift();
|
|
293
|
+
const record = buffered.shift();
|
|
230
294
|
if (buffered.length === 0) {
|
|
231
295
|
this.buffer.delete(key);
|
|
232
|
-
this.bufferSeqNums.delete(key);
|
|
233
|
-
}
|
|
234
|
-
if (shiftedSeqNum !== undefined) {
|
|
235
|
-
this.#advanceLastDispatched(key, shiftedSeqNum);
|
|
236
296
|
}
|
|
297
|
+
this.#advanceLastDispatched(key, record.seqNum);
|
|
298
|
+
this.#drainOnceWaitersFromBuffer(key);
|
|
237
299
|
return true;
|
|
238
300
|
}
|
|
239
301
|
return false;
|
|
@@ -241,7 +303,6 @@ class StandardSessionStreamManager {
|
|
|
241
303
|
disconnectStream(sessionId, io) {
|
|
242
304
|
const key = keyFor(sessionId, io);
|
|
243
305
|
const tail = this.tails.get(key);
|
|
244
|
-
const _bufferedSize = this.buffer.get(key)?.length ?? 0;
|
|
245
306
|
// Mark as explicitly disconnected BEFORE we abort, so the tail's
|
|
246
307
|
// `.finally` reconnect path sees the flag when it runs (which can be
|
|
247
308
|
// synchronous in the AbortError catch). Cleared on the next explicit
|
|
@@ -251,13 +312,23 @@ class StandardSessionStreamManager {
|
|
|
251
312
|
tail.abortController.abort();
|
|
252
313
|
this.tails.delete(key);
|
|
253
314
|
}
|
|
254
|
-
this.buffer.delete(key);
|
|
255
|
-
this.bufferSeqNums.delete(key);
|
|
256
315
|
// Reset the backoff counter so a future re-attach starts fresh —
|
|
257
316
|
// an explicit disconnect is a deliberate teardown, not evidence of
|
|
258
317
|
// a broken backend.
|
|
259
318
|
this.reconnectAttempts.delete(key);
|
|
260
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* Re-open a channel that `disconnectStream` closed, without registering a
|
|
322
|
+
* new consumer. A single long-lived reader (the session channel router) has
|
|
323
|
+
* to be able to bring its own tail back after a suspend, and re-attaching
|
|
324
|
+
* its handler just to clear the suppression flag would replay the buffer at
|
|
325
|
+
* it.
|
|
326
|
+
*/
|
|
327
|
+
reconnectStream(sessionId, io) {
|
|
328
|
+
const key = keyFor(sessionId, io);
|
|
329
|
+
this.explicitlyDisconnected.delete(key);
|
|
330
|
+
this.#ensureTailConnected(sessionId, io);
|
|
331
|
+
}
|
|
261
332
|
clearHandlers() {
|
|
262
333
|
this.handlers.clear();
|
|
263
334
|
for (const [key, tail] of this.tails) {
|
|
@@ -287,6 +358,7 @@ class StandardSessionStreamManager {
|
|
|
287
358
|
this.disconnect();
|
|
288
359
|
this.seqNums.clear();
|
|
289
360
|
this.lastDispatchedSeqNums.clear();
|
|
361
|
+
this.unconsumedSeqNums.clear();
|
|
290
362
|
this.minTimestamps.clear();
|
|
291
363
|
this.handlers.clear();
|
|
292
364
|
this.reconnectAttempts.clear();
|
|
@@ -302,7 +374,6 @@ class StandardSessionStreamManager {
|
|
|
302
374
|
}
|
|
303
375
|
this.onceWaiters.clear();
|
|
304
376
|
this.buffer.clear();
|
|
305
|
-
this.bufferSeqNums.clear();
|
|
306
377
|
}
|
|
307
378
|
#ensureTailConnected(sessionId, io) {
|
|
308
379
|
const key = keyFor(sessionId, io);
|
|
@@ -318,15 +389,10 @@ class StandardSessionStreamManager {
|
|
|
318
389
|
.finally(() => {
|
|
319
390
|
this.tails.delete(key);
|
|
320
391
|
// If the tail was torn down explicitly via `disconnectStream`,
|
|
321
|
-
// honor that
|
|
322
|
-
//
|
|
323
|
-
//
|
|
324
|
-
//
|
|
325
|
-
// `stopInput.on(...)`) would auto-reconnect during the suspend
|
|
326
|
-
// window, the resurrected tail would receive the same record the
|
|
327
|
-
// waitpoint just delivered, and that record would land in the
|
|
328
|
-
// buffer where the next turn's `messagesInput.on(...)` drains it
|
|
329
|
-
// and runs a duplicate turn.
|
|
392
|
+
// honor that until a fresh `on()` / `once()` re-attaches. Existing
|
|
393
|
+
// buffered records stay available across the suspension, but a
|
|
394
|
+
// run-level handler must not reconnect and receive another copy of
|
|
395
|
+
// the record being delivered through the waitpoint.
|
|
330
396
|
if (this.explicitlyDisconnected.has(key)) {
|
|
331
397
|
return;
|
|
332
398
|
}
|
|
@@ -378,9 +444,9 @@ class StandardSessionStreamManager {
|
|
|
378
444
|
if (signal.aborted)
|
|
379
445
|
return;
|
|
380
446
|
const seqNum = parseInt(part.id, 10);
|
|
381
|
-
if (Number.isFinite(seqNum))
|
|
382
|
-
|
|
383
|
-
|
|
447
|
+
if (!Number.isFinite(seqNum))
|
|
448
|
+
return;
|
|
449
|
+
this.seqNums.set(key, seqNum);
|
|
384
450
|
// Trigger control records (turn-complete, upgrade-required)
|
|
385
451
|
// are dispatched out-of-band via `onControl` — they're not
|
|
386
452
|
// consumer-facing data. Skip the data dispatch path.
|
|
@@ -403,7 +469,11 @@ class StandardSessionStreamManager {
|
|
|
403
469
|
// keep as string
|
|
404
470
|
}
|
|
405
471
|
}
|
|
406
|
-
this.#dispatch(key,
|
|
472
|
+
this.#dispatch(key, {
|
|
473
|
+
id: part.recordId ?? part.id,
|
|
474
|
+
seqNum,
|
|
475
|
+
data,
|
|
476
|
+
});
|
|
407
477
|
},
|
|
408
478
|
onComplete: () => {
|
|
409
479
|
if (this.debug) {
|
|
@@ -429,28 +499,19 @@ class StandardSessionStreamManager {
|
|
|
429
499
|
throw error;
|
|
430
500
|
}
|
|
431
501
|
}
|
|
432
|
-
#dispatch(key,
|
|
502
|
+
#dispatch(key, record) {
|
|
433
503
|
// Any record flowing through = healthy connection; reset the backoff
|
|
434
504
|
// counter so the next disconnect starts fresh.
|
|
435
505
|
this.reconnectAttempts.delete(key);
|
|
436
|
-
const
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
if (waiters.length === 0)
|
|
440
|
-
this.onceWaiters.delete(key);
|
|
441
|
-
if (waiter.timeoutHandle)
|
|
442
|
-
clearTimeout(waiter.timeoutHandle);
|
|
443
|
-
if (waiter.signal && waiter.abortHandler) {
|
|
444
|
-
waiter.signal.removeEventListener("abort", waiter.abortHandler);
|
|
445
|
-
}
|
|
506
|
+
const existingBuffer = this.buffer.get(key);
|
|
507
|
+
const waiter = existingBuffer && existingBuffer.length > 0 ? undefined : this.#takeOnceWaiter(key, record);
|
|
508
|
+
if (waiter) {
|
|
446
509
|
// Record was consumed directly by a waiter — advance the
|
|
447
510
|
// committed-consume cursor immediately. Buffered-then-shifted
|
|
448
511
|
// records advance the cursor in `once()` / `shiftBuffer()`.
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
waiter.resolve({ ok: true, output: data });
|
|
453
|
-
this.#invokeHandlers(key, data);
|
|
512
|
+
this.#advanceLastDispatched(key, record.seqNum);
|
|
513
|
+
waiter.resolve({ ok: true, output: record });
|
|
514
|
+
this.#invokeHandlers(key, record);
|
|
454
515
|
return;
|
|
455
516
|
}
|
|
456
517
|
// Persistent handlers get a copy of the chunk. A handler that
|
|
@@ -461,11 +522,9 @@ class StandardSessionStreamManager {
|
|
|
461
522
|
// second turn. Records no handler consumed (e.g. a message arriving
|
|
462
523
|
// while only the stop facade is attached during preload) are buffered
|
|
463
524
|
// so a subsequent `once()` can still pick them up.
|
|
464
|
-
const consumed = this.#invokeHandlers(key,
|
|
525
|
+
const consumed = this.#invokeHandlers(key, record);
|
|
465
526
|
if (consumed) {
|
|
466
|
-
|
|
467
|
-
this.#advanceLastDispatched(key, seqNum);
|
|
468
|
-
}
|
|
527
|
+
this.#advanceLastDispatched(key, record.seqNum);
|
|
469
528
|
return;
|
|
470
529
|
}
|
|
471
530
|
let buffered = this.buffer.get(key);
|
|
@@ -473,35 +532,70 @@ class StandardSessionStreamManager {
|
|
|
473
532
|
buffered = [];
|
|
474
533
|
this.buffer.set(key, buffered);
|
|
475
534
|
}
|
|
476
|
-
buffered.push(
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
535
|
+
buffered.push(record);
|
|
536
|
+
this.#markUnconsumedRecord(key, record.seqNum);
|
|
537
|
+
this.#drainOnceWaitersFromBuffer(key);
|
|
538
|
+
}
|
|
539
|
+
#takeOnceWaiter(key, record) {
|
|
540
|
+
const waiters = this.onceWaiters.get(key);
|
|
541
|
+
if (!waiters)
|
|
542
|
+
return undefined;
|
|
543
|
+
const index = waiters.findIndex((waiter) => {
|
|
544
|
+
if (!waiter.predicate)
|
|
545
|
+
return true;
|
|
546
|
+
try {
|
|
547
|
+
return waiter.predicate(record);
|
|
548
|
+
}
|
|
549
|
+
catch (error) {
|
|
550
|
+
if (this.debug) {
|
|
551
|
+
console.error("[SessionStreamManager] Record predicate error:", error);
|
|
552
|
+
}
|
|
553
|
+
return false;
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
if (index === -1)
|
|
557
|
+
return undefined;
|
|
558
|
+
const [waiter] = waiters.splice(index, 1);
|
|
559
|
+
if (waiters.length === 0)
|
|
560
|
+
this.onceWaiters.delete(key);
|
|
561
|
+
if (waiter.timeoutHandle)
|
|
562
|
+
clearTimeout(waiter.timeoutHandle);
|
|
563
|
+
if (waiter.signal && waiter.abortHandler) {
|
|
564
|
+
waiter.signal.removeEventListener("abort", waiter.abortHandler);
|
|
565
|
+
}
|
|
566
|
+
return waiter;
|
|
567
|
+
}
|
|
568
|
+
#drainOnceWaitersFromBuffer(key) {
|
|
569
|
+
const buffered = this.buffer.get(key);
|
|
570
|
+
while (buffered && buffered.length > 0) {
|
|
571
|
+
const record = buffered[0];
|
|
572
|
+
const waiter = this.#takeOnceWaiter(key, record);
|
|
573
|
+
if (!waiter)
|
|
574
|
+
return;
|
|
575
|
+
buffered.shift();
|
|
576
|
+
if (buffered.length === 0)
|
|
577
|
+
this.buffer.delete(key);
|
|
578
|
+
this.#advanceLastDispatched(key, record.seqNum);
|
|
579
|
+
waiter.resolve({ ok: true, output: record });
|
|
481
580
|
}
|
|
482
|
-
// Always push, even when `seqNum` is undefined (e.g. NaN from a
|
|
483
|
-
// malformed `part.id`). Skipping the push here would drift the two
|
|
484
|
-
// arrays apart and misattribute seq_nums to records on the next
|
|
485
|
-
// shift.
|
|
486
|
-
bufferedSeqs.push(seqNum);
|
|
487
581
|
}
|
|
488
582
|
/** Returns true when any handler consumed the record. All handlers are invoked regardless. */
|
|
489
|
-
#invokeHandlers(key,
|
|
583
|
+
#invokeHandlers(key, record) {
|
|
490
584
|
const handlers = this.handlers.get(key);
|
|
491
585
|
if (!handlers)
|
|
492
586
|
return false;
|
|
493
587
|
let consumed = false;
|
|
494
588
|
for (const handler of handlers) {
|
|
495
|
-
if (this.#invokeHandler(handler,
|
|
589
|
+
if (this.#invokeHandler(handler, record)) {
|
|
496
590
|
consumed = true;
|
|
497
591
|
}
|
|
498
592
|
}
|
|
499
593
|
return consumed;
|
|
500
594
|
}
|
|
501
595
|
/** Returns true when the handler synchronously consumed the record (returned `true`). */
|
|
502
|
-
#invokeHandler(handler,
|
|
596
|
+
#invokeHandler(handler, record) {
|
|
503
597
|
try {
|
|
504
|
-
const result = handler(data);
|
|
598
|
+
const result = handler.kind === "record" ? handler.fn(record) : handler.fn(record.data);
|
|
505
599
|
if (result === true)
|
|
506
600
|
return true;
|
|
507
601
|
if (result && typeof result === "object" && "catch" in result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/manager.ts"],"names":[],"mappings":"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"}
|