@convex-dev/agent 0.7.2 → 0.7.3
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/component/streams.d.ts.map +1 -1
- package/dist/component/streams.js +0 -2
- package/dist/component/streams.js.map +1 -1
- package/dist/component/threads.d.ts.map +1 -1
- package/dist/component/threads.js +1 -0
- package/dist/component/threads.js.map +1 -1
- package/dist/vercel/client/streamText.d.ts.map +1 -1
- package/dist/vercel/client/streamText.js +32 -5
- package/dist/vercel/client/streamText.js.map +1 -1
- package/dist/vercel/client/streaming.d.ts +22 -4
- package/dist/vercel/client/streaming.d.ts.map +1 -1
- package/dist/vercel/client/streaming.js +121 -19
- package/dist/vercel/client/streaming.js.map +1 -1
- package/package.json +1 -1
- package/src/component/streams.test.ts +54 -1
- package/src/component/streams.ts +0 -2
- package/src/component/threads.test.ts +39 -0
- package/src/component/threads.ts +1 -0
- package/src/vercel/client/deltaFlush.test.ts +106 -0
- package/src/vercel/client/streamText.test.ts +464 -1
- package/src/vercel/client/streamText.ts +32 -4
- package/src/vercel/client/streaming.integration.test.ts +40 -3
- package/src/vercel/client/streaming.test.ts +30 -0
- package/src/vercel/client/streaming.throttle.test.ts +144 -0
- package/src/vercel/client/streaming.ts +135 -19
|
@@ -70,6 +70,7 @@ export async function listStreams(ctx, component, { threadId, startOrder, includ
|
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
export const DEFAULT_STREAMING_OPTIONS = {
|
|
73
|
+
sendSources: false,
|
|
73
74
|
// This chunks by sentences / clauses. Punctuation followed by whitespace.
|
|
74
75
|
chunking: /[\p{P}\s]/u,
|
|
75
76
|
throttleMs: 250,
|
|
@@ -113,12 +114,22 @@ export class DeltaStreamer {
|
|
|
113
114
|
#nextParts = [];
|
|
114
115
|
#latestWrite = 0;
|
|
115
116
|
#ongoingWrite;
|
|
117
|
+
#flushTimer;
|
|
116
118
|
#abortPromise;
|
|
117
119
|
#cursor = 0;
|
|
118
120
|
abortController;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
/**
|
|
122
|
+
* When true, external code finishes the stream row (atomically with the
|
|
123
|
+
* message save, issue #181) and `consumeStream` must not. Decided once, at
|
|
124
|
+
* construction.
|
|
125
|
+
*/
|
|
126
|
+
#finishHandledExternally;
|
|
127
|
+
/**
|
|
128
|
+
* Set only where the row is finished before the source is drained. An
|
|
129
|
+
* optimization, not a race guard: `addDelta` already returns false for a
|
|
130
|
+
* non-streaming row.
|
|
131
|
+
*/
|
|
132
|
+
#stoppedAccepting = false;
|
|
122
133
|
constructor(component, ctx, config, metadata) {
|
|
123
134
|
this.component = component;
|
|
124
135
|
this.ctx = ctx;
|
|
@@ -129,6 +140,7 @@ export class DeltaStreamer {
|
|
|
129
140
|
compress: config.compress,
|
|
130
141
|
materialize: config.materialize ?? null,
|
|
131
142
|
};
|
|
143
|
+
this.#finishHandledExternally = config.finishHandledExternally ?? false;
|
|
132
144
|
this.#nextParts = [];
|
|
133
145
|
this.abortController = new AbortController();
|
|
134
146
|
if (config.abortSignal) {
|
|
@@ -166,23 +178,58 @@ export class DeltaStreamer {
|
|
|
166
178
|
if (this.abortController.signal.aborted) {
|
|
167
179
|
return;
|
|
168
180
|
}
|
|
169
|
-
|
|
170
|
-
// save in streamText's onStepFinish for the returnImmediately path),
|
|
171
|
-
// the stream record is already "finished" in the DB. Late deltas
|
|
172
|
-
// would be silently dropped by streams.addDelta — skip the work.
|
|
173
|
-
if (this.#finishedExternally) {
|
|
181
|
+
if (this.#stoppedAccepting) {
|
|
174
182
|
return;
|
|
175
183
|
}
|
|
184
|
+
// Buffer before awaiting: a part parked in stream creation would be
|
|
185
|
+
// invisible to #flushPendingParts.
|
|
186
|
+
this.#nextParts.push(...parts);
|
|
176
187
|
const streamId = await this.getOrCreateStreamId({
|
|
177
188
|
ifAborted: "returnUndefined",
|
|
178
189
|
});
|
|
179
190
|
if (!streamId)
|
|
180
191
|
return;
|
|
181
|
-
this.#
|
|
192
|
+
if (this.#stoppedAccepting || this.abortController.signal.aborted) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
182
195
|
if (!this.#ongoingWrite &&
|
|
183
196
|
Date.now() - this.#latestWrite >= this.config.throttleMs) {
|
|
184
197
|
this.#ongoingWrite = this.#sendDelta();
|
|
185
198
|
}
|
|
199
|
+
else {
|
|
200
|
+
this.#scheduleFlush();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// The throttle is only reconsidered when the next part arrives, so a pause in
|
|
204
|
+
// the stream would otherwise hold whatever is buffered until it resumes.
|
|
205
|
+
#scheduleFlush() {
|
|
206
|
+
if (this.#flushTimer) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const wait = Math.max(0, this.config.throttleMs - (Date.now() - this.#latestWrite));
|
|
210
|
+
this.#flushTimer = setTimeout(() => {
|
|
211
|
+
this.#flushTimer = undefined;
|
|
212
|
+
if (this.#ongoingWrite ||
|
|
213
|
+
this.#nextParts.length === 0 ||
|
|
214
|
+
this.#stoppedAccepting ||
|
|
215
|
+
this.abortController.signal.aborted) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// A write can start and land while this wake is armed, which moves the
|
|
219
|
+
// deadline out from under it. Re-arm against the current one rather
|
|
220
|
+
// than publishing early.
|
|
221
|
+
if (Date.now() - this.#latestWrite < this.config.throttleMs) {
|
|
222
|
+
this.#scheduleFlush();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
this.#ongoingWrite = this.#sendDelta();
|
|
226
|
+
}, wait);
|
|
227
|
+
}
|
|
228
|
+
#cancelScheduledFlush() {
|
|
229
|
+
if (this.#flushTimer) {
|
|
230
|
+
clearTimeout(this.#flushTimer);
|
|
231
|
+
this.#flushTimer = undefined;
|
|
232
|
+
}
|
|
186
233
|
}
|
|
187
234
|
async consumeStream(stream) {
|
|
188
235
|
try {
|
|
@@ -197,24 +244,70 @@ export class DeltaStreamer {
|
|
|
197
244
|
await this.#abort(errorToString(error)).catch(() => { });
|
|
198
245
|
throw error;
|
|
199
246
|
}
|
|
200
|
-
// Skip finish if it will be handled externally (atomically with message save)
|
|
201
|
-
// or if the stream was aborted (e.g., due to a failed delta write).
|
|
202
247
|
// Abort cleanup owns the terminal component transition, so consumeStream
|
|
203
248
|
// must wait for it instead of also trying to finish the stream.
|
|
204
249
|
if (this.abortController.signal.aborted) {
|
|
205
250
|
await this.#waitForAbortCleanup();
|
|
251
|
+
return;
|
|
206
252
|
}
|
|
207
|
-
|
|
253
|
+
// EOF is the only point where every part has actually been handed over:
|
|
254
|
+
// parts sit in the AI SDK's transform and tee pipeline until the iterator
|
|
255
|
+
// yields them, so no earlier callback can observe them.
|
|
256
|
+
try {
|
|
257
|
+
await this.#flushPendingParts();
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
if (this.abortController.signal.aborted) {
|
|
261
|
+
await this.#waitForAbortCleanup();
|
|
262
|
+
}
|
|
263
|
+
throw error;
|
|
264
|
+
}
|
|
265
|
+
if (this.abortController.signal.aborted) {
|
|
266
|
+
await this.#waitForAbortCleanup();
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
if (!this.#finishHandledExternally) {
|
|
208
270
|
await this.finish();
|
|
209
271
|
}
|
|
210
272
|
}
|
|
211
273
|
/**
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
|
|
274
|
+
* Drain everything currently buffered or in flight, so that after this
|
|
275
|
+
* resolves no delta write is outstanding and #nextParts is empty.
|
|
276
|
+
*/
|
|
277
|
+
async #flushPendingParts() {
|
|
278
|
+
while (!this.abortController.signal.aborted) {
|
|
279
|
+
const inFlight = this.#ongoingWrite;
|
|
280
|
+
await inFlight;
|
|
281
|
+
// #sendDelta reassigns #ongoingWrite from its own tail, so a write can
|
|
282
|
+
// still be live even though the buffer it drained is now empty.
|
|
283
|
+
if (this.#ongoingWrite !== inFlight) {
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (this.#nextParts.length === 0) {
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
this.#ongoingWrite = this.#sendDelta();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* For the `returnImmediately` path, where nothing awaits consumption and the
|
|
294
|
+
* save has to happen inline (issue #265).
|
|
295
|
+
*
|
|
296
|
+
* Inherent window: parts still inside the AI SDK pipeline at this instant
|
|
297
|
+
* never reach addParts, so they are never persisted as deltas (the
|
|
298
|
+
* stream-level `finish` chunk among them). The message saved alongside this
|
|
299
|
+
* transition is complete, and is authoritative once the stream is finished.
|
|
300
|
+
*
|
|
301
|
+
* Narrower race left open: a part admitted after the loop's last emptiness
|
|
302
|
+
* check is buffered but not drained here, and the write it triggers at EOF
|
|
303
|
+
* lands on a row the caller has since finished. `#sendDelta` tolerates that
|
|
304
|
+
* refusal rather than aborting. Closing it means refusing admission for the
|
|
305
|
+
* duration of the drain, which drops more of the tail than it saves.
|
|
215
306
|
*/
|
|
216
|
-
|
|
217
|
-
this.#
|
|
307
|
+
async flushAndStopAccepting() {
|
|
308
|
+
this.#cancelScheduledFlush();
|
|
309
|
+
await this.#flushPendingParts();
|
|
310
|
+
this.#stoppedAccepting = true;
|
|
218
311
|
}
|
|
219
312
|
async getOrCreateStreamId(options) {
|
|
220
313
|
if (options?.ifAborted !== "returnUndefined") {
|
|
@@ -232,11 +325,13 @@ export class DeltaStreamer {
|
|
|
232
325
|
return streamId;
|
|
233
326
|
}
|
|
234
327
|
async #sendDelta() {
|
|
328
|
+
this.#cancelScheduledFlush();
|
|
235
329
|
if (this.abortController.signal.aborted) {
|
|
236
330
|
return;
|
|
237
331
|
}
|
|
238
332
|
let success;
|
|
239
333
|
try {
|
|
334
|
+
await this.getStreamId();
|
|
240
335
|
const delta = await this.#createDelta();
|
|
241
336
|
if (!delta) {
|
|
242
337
|
return;
|
|
@@ -249,11 +344,11 @@ export class DeltaStreamer {
|
|
|
249
344
|
return;
|
|
250
345
|
}
|
|
251
346
|
if (!success) {
|
|
252
|
-
//
|
|
347
|
+
// A #sendDelta racing the inline save on the returnImmediately path
|
|
253
348
|
// will get `success === false` because the stream row is already
|
|
254
349
|
// "finished". That's a benign late-write miss, not a failure —
|
|
255
350
|
// don't convert it into an abort.
|
|
256
|
-
if (this.#
|
|
351
|
+
if (this.#stoppedAccepting) {
|
|
257
352
|
return;
|
|
258
353
|
}
|
|
259
354
|
await this.#abortDelta("async abort");
|
|
@@ -267,6 +362,11 @@ export class DeltaStreamer {
|
|
|
267
362
|
}
|
|
268
363
|
else {
|
|
269
364
|
this.#ongoingWrite = undefined;
|
|
365
|
+
// Whatever is still buffered has just lost its owner: this write is
|
|
366
|
+
// over and no arrival is guaranteed to follow. Hand it to the timer.
|
|
367
|
+
if (this.#nextParts.length > 0) {
|
|
368
|
+
this.#scheduleFlush();
|
|
369
|
+
}
|
|
270
370
|
}
|
|
271
371
|
}
|
|
272
372
|
async #createDelta() {
|
|
@@ -298,6 +398,7 @@ export class DeltaStreamer {
|
|
|
298
398
|
};
|
|
299
399
|
}
|
|
300
400
|
async finish() {
|
|
401
|
+
this.#cancelScheduledFlush();
|
|
301
402
|
if (!this.streamId) {
|
|
302
403
|
return;
|
|
303
404
|
}
|
|
@@ -343,6 +444,7 @@ export class DeltaStreamer {
|
|
|
343
444
|
}
|
|
344
445
|
#abort(reason, waitForOngoingWrite = true) {
|
|
345
446
|
if (!this.#abortPromise) {
|
|
447
|
+
this.#cancelScheduledFlush();
|
|
346
448
|
this.abortController.abort();
|
|
347
449
|
this.#abortPromise = this.#abortCreatedStream(reason, waitForOngoingWrite);
|
|
348
450
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/vercel/client/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAOb,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,cAAc,GAKf,MAAM,qBAAqB,CAAC;AAS7B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM;IACxC,OAAO,EAAE,CAAC,CAAC,QAAQ,CACjB,CAAC,CAAC,KAAK,CACL,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EACxE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CACvE,CACF;CACF,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAuC,EACvC,SAAyB,EACzB,EACE,QAAQ,EACR,UAAU,EACV,eAAe,GAMhB;IAED,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE;gBAC1C,QAAQ;gBACR,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,eAAe;aAChB,CAAC;SACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvD,QAAQ;gBACR,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAA4B,EAC5B,SAAyB,EACzB,IAGC;IAED,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE;YACpD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE;YAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAuC,EACvC,SAAyB,EACzB,EACE,QAAQ,EACR,UAAU,EACV,eAAe,GAKhB;IAED,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;QAC1C,QAAQ;QACR,UAAU;QACV,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAC;AACL,CAAC;AAyBD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,0EAA0E;IAC1E,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,GAAG;IACf,iBAAiB,EAAE,KAAK;CACE,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA0E,EAC1E,QAGa;IAEb,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GACZ,OAAO,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,yBAAyB,CAAC,QAAQ;QACpC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,CAAC,QAAQ,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC;IACT,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAwBN;IACA;IAWA;IAnClB,QAAQ,CAAqB;IACb,MAAM,CAUpB;IACF,UAAU,GAAQ,EAAE,CAAC;IACrB,YAAY,GAAW,CAAC,CAAC;IACzB,aAAa,CAA4B;IACzC,aAAa,CAA4B;IACzC,OAAO,GAAW,CAAC,CAAC;IACb,eAAe,CAAkB;IACxC,uFAAuF;IACvF,kDAAkD;IAClD,mBAAmB,GAAY,KAAK,CAAC;IAErC,YACkB,SAAyB,EACzB,GAA4B,EAC5C,MASC,EACe,QAUf;QAtBe,cAAS,GAAT,SAAS,CAAgB;QACzB,QAAG,GAAH,GAAG,CAAyB;QAW5B,aAAQ,GAAR,QAAQ,CAUvB;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,yBAAyB,CAAC,UAAU;YACrE,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;SACxC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,GAAG,EAAE;gBAC3B,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBACzC,4DAA4D;gBAC9D,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,IAAI,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC/B,eAAe,EAAE,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE;oBAC5D,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,wBAAwB,CAA8B;IAC/C,KAAK,CAAC,WAAW;QACtB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,aAAa,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBACnC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAClD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAC7B,IAAI,CAAC,QAAQ,CACd,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAU;QAC9B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,mEAAmE;QACnE,qEAAqE;QACrE,iEAAiE;QACjE,iEAAiE;QACjE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC9C,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC/B,IACE,CAAC,IAAI,CAAC,aAAa;YACnB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EACxD,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAA8B;QACvD,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sEAAsE;YACtE,iEAAiE;YACjE,gDAAgD;YAChD,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,8EAA8E;QAC9E,oEAAoE;QACpE,yEAAyE;QACzE,gEAAgE;QAChE,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,sBAAsB;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAUM,KAAK,CAAC,mBAAmB,CAAC,OAEhC;QACC,IAAI,OAAO,EAAE,SAAS,KAAK,iBAAiB,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,aAAa,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,aAAa,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAC/B,KAAK,CACN,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,kEAAkE;YAClE,iEAAiE;YACjE,+DAA+D;YAC/D,kCAAkC;YAClC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,uEAAuE;QACvE,IACE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC1B,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EACxD,CAAC;YACD,yDAAyD;YACzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAIhB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;YAC1C,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;YAC7C,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YAChC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;YAC1C,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;YACL,GAAG;YACH,KAAK;YACL,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAClC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE;gBACrC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,uCAAuC;QAChE,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;YACxD,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,IAAI,eAA+C,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,GAAG,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,sDAAsD;YACxD,CAAC;QACH,CAAC;QACD,IAAI,eAAe;YAAE,MAAM,eAAe,CAAC,KAAK,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,mBAAmB,GAAG,IAAI;QAC/C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAC3C,MAAM,EACN,mBAAmB,CACpB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,IAAI,YAA4C,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,KAAK,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC,KAAK,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAAc,EAAE,mBAA4B;QACpE,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,wBAAwB,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,YAA4C,CAAC;QACjD,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,aAAa,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,IAAI,YAA4C,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE;gBACvD,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC,KAAK,CAAC;QAC3C,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC,KAAK,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AAEH,MAAM,UAAU,uBAAuB,CACrC,KAAuB;IAEvB,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAClE,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAgC;IAEhC,MAAM,UAAU,GAA8B,EAAE,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAClE,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACpD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACJ,GAAG,IAAI,CAAC,IAAI;oBACZ,UAAU,EAAE,SAAkC;iBAC/C;aACF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/vercel/client/streaming.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/// <reference types="vite/client" />
|
|
2
2
|
|
|
3
|
-
import { describe, expect, test } from "vitest";
|
|
3
|
+
import { afterEach, describe, expect, test, vi } from "vitest";
|
|
4
4
|
import { api } from "./_generated/api.js";
|
|
5
5
|
import type { Id } from "./_generated/dataModel.js";
|
|
6
6
|
import { initConvexTest } from "./setup.test.js";
|
|
7
7
|
|
|
8
|
+
afterEach(() => vi.useRealTimers());
|
|
9
|
+
|
|
8
10
|
async function seedStream(t: ReturnType<typeof initConvexTest>) {
|
|
9
11
|
const thread = await t.mutation(api.threads.createThread, {
|
|
10
12
|
userId: "stream-files",
|
|
@@ -106,4 +108,55 @@ describe("streams", () => {
|
|
|
106
108
|
expect(stream?.state.kind).toBe("finished");
|
|
107
109
|
expect(stream?.fileRefs).toBeUndefined();
|
|
108
110
|
});
|
|
111
|
+
|
|
112
|
+
test("bulk deletion preserves global stream order across status lanes", async () => {
|
|
113
|
+
vi.useFakeTimers();
|
|
114
|
+
|
|
115
|
+
const t = initConvexTest();
|
|
116
|
+
const thread = await t.mutation(api.threads.createThread, {
|
|
117
|
+
userId: "stream-cleanup",
|
|
118
|
+
});
|
|
119
|
+
const threadId = thread._id as Id<"threads">;
|
|
120
|
+
const earlyStreamId = await t.run(async (ctx) => {
|
|
121
|
+
const streamId = await ctx.db.insert("streamingMessages", {
|
|
122
|
+
threadId,
|
|
123
|
+
order: 1,
|
|
124
|
+
stepOrder: 0,
|
|
125
|
+
format: "UIMessageChunk",
|
|
126
|
+
state: { kind: "streaming", lastHeartbeat: Date.now() },
|
|
127
|
+
});
|
|
128
|
+
await ctx.db.insert("streamingMessages", {
|
|
129
|
+
threadId,
|
|
130
|
+
order: 9,
|
|
131
|
+
stepOrder: 0,
|
|
132
|
+
format: "UIMessageChunk",
|
|
133
|
+
state: { kind: "aborted", reason: "retained regeneration" },
|
|
134
|
+
});
|
|
135
|
+
await ctx.db.insert("streamDeltas", {
|
|
136
|
+
streamId,
|
|
137
|
+
start: 0,
|
|
138
|
+
end: 1,
|
|
139
|
+
parts: [{ type: "text-start", id: "text" }],
|
|
140
|
+
});
|
|
141
|
+
return streamId;
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
await t.mutation(api.streams.deleteAllStreamsForThreadIdAsync, {
|
|
145
|
+
threadId,
|
|
146
|
+
});
|
|
147
|
+
await t.finishAllScheduledFunctions(vi.runAllTimers);
|
|
148
|
+
|
|
149
|
+
expect(
|
|
150
|
+
await t.query(api.streams.list, {
|
|
151
|
+
threadId,
|
|
152
|
+
statuses: ["streaming", "finished", "aborted"],
|
|
153
|
+
}),
|
|
154
|
+
).toEqual([]);
|
|
155
|
+
expect(
|
|
156
|
+
await t.query(api.streams.listDeltas, {
|
|
157
|
+
threadId,
|
|
158
|
+
cursors: [{ streamId: earlyStreamId, cursor: 0 }],
|
|
159
|
+
}),
|
|
160
|
+
).toEqual([]);
|
|
161
|
+
});
|
|
109
162
|
});
|
package/src/component/streams.ts
CHANGED
|
@@ -458,6 +458,45 @@ describe("threads", () => {
|
|
|
458
458
|
vi.useRealTimers();
|
|
459
459
|
});
|
|
460
460
|
|
|
461
|
+
test("deleteAllForThreadIdAsync preserves its limit across continuations", async () => {
|
|
462
|
+
vi.useFakeTimers();
|
|
463
|
+
|
|
464
|
+
const t = convexTest(schema, modules);
|
|
465
|
+
const thread = await t.mutation(api.threads.createThread, {
|
|
466
|
+
userId: "boundedDeleteUser",
|
|
467
|
+
title: "Bounded Delete Thread",
|
|
468
|
+
});
|
|
469
|
+
const threadId = thread._id as Id<"threads">;
|
|
470
|
+
await t.mutation(api.messages.addMessages, {
|
|
471
|
+
threadId,
|
|
472
|
+
messages: Array.from({ length: 4 }, (_, i) => ({
|
|
473
|
+
message: { role: "user" as const, content: `Message ${i}` },
|
|
474
|
+
})),
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
await t.mutation(api.threads.deleteAllForThreadIdAsync, {
|
|
478
|
+
threadId,
|
|
479
|
+
limit: 1,
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
vi.runOnlyPendingTimers();
|
|
483
|
+
await t.finishInProgressScheduledFunctions();
|
|
484
|
+
const afterOneContinuation = await t.query(
|
|
485
|
+
api.messages.listMessagesByThreadId,
|
|
486
|
+
{
|
|
487
|
+
threadId,
|
|
488
|
+
order: "asc",
|
|
489
|
+
paginationOpts: { cursor: null, numItems: 10 },
|
|
490
|
+
},
|
|
491
|
+
);
|
|
492
|
+
|
|
493
|
+
await t.finishAllScheduledFunctions(vi.runAllTimers);
|
|
494
|
+
vi.useRealTimers();
|
|
495
|
+
|
|
496
|
+
expect(afterOneContinuation.page).toHaveLength(2);
|
|
497
|
+
expect(await t.query(api.threads.getThread, { threadId })).toBeNull();
|
|
498
|
+
});
|
|
499
|
+
|
|
461
500
|
test("deleteAllForThreadIdSync handles thread with no messages", async () => {
|
|
462
501
|
const t = convexTest(schema, modules);
|
|
463
502
|
|
package/src/component/threads.ts
CHANGED
|
@@ -207,6 +207,7 @@ export const deleteAllForThreadIdAsync = mutation({
|
|
|
207
207
|
if (!isDone) {
|
|
208
208
|
await ctx.scheduler.runAfter(0, api.threads.deleteAllForThreadIdAsync, {
|
|
209
209
|
threadId: args.threadId,
|
|
210
|
+
limit: args.limit,
|
|
210
211
|
cursor: messagesResult.cursor,
|
|
211
212
|
messagesDone: messagesResult.isDone,
|
|
212
213
|
streamsDone: streamResult.isDone,
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { stepCountIs } from "ai";
|
|
4
|
+
import { Agent, createTool, createThread } from "../index.js";
|
|
5
|
+
import {
|
|
6
|
+
actionGeneric,
|
|
7
|
+
anyApi,
|
|
8
|
+
defineSchema,
|
|
9
|
+
type ActionBuilder,
|
|
10
|
+
type ApiFromModules,
|
|
11
|
+
type DataModelFromSchemaDefinition,
|
|
12
|
+
} from "convex/server";
|
|
13
|
+
import { v } from "convex/values";
|
|
14
|
+
import { components, initConvexTest } from "./setup.test.js";
|
|
15
|
+
import { mockModel } from "./mockModel.js";
|
|
16
|
+
|
|
17
|
+
const schema = defineSchema({});
|
|
18
|
+
type DataModel = DataModelFromSchemaDefinition<typeof schema>;
|
|
19
|
+
const action = actionGeneric as ActionBuilder<DataModel, "public">;
|
|
20
|
+
|
|
21
|
+
// The AI SDK emits tool-input-available before the tool runs. The whole point
|
|
22
|
+
// of issue #221 is that a client can see it while the tool is still working,
|
|
23
|
+
// so the tool itself is where the delta log has to be read.
|
|
24
|
+
const partsSeenDuringTool: string[] = [];
|
|
25
|
+
|
|
26
|
+
const sleepTool = createTool({
|
|
27
|
+
description: "sleep",
|
|
28
|
+
inputSchema: z.object({ seconds: z.number() }),
|
|
29
|
+
execute: async (ctx) => {
|
|
30
|
+
const readTypes = async () => {
|
|
31
|
+
const streams = await ctx.runQuery(components.agent.streams.list, {
|
|
32
|
+
threadId: ctx.threadId!,
|
|
33
|
+
statuses: ["streaming"],
|
|
34
|
+
});
|
|
35
|
+
const deltas = await ctx.runQuery(components.agent.streams.listDeltas, {
|
|
36
|
+
threadId: ctx.threadId!,
|
|
37
|
+
cursors: streams.map((s) => ({ streamId: s.streamId, cursor: 0 })),
|
|
38
|
+
});
|
|
39
|
+
return deltas.flatMap((d) => d.parts.map((p) => p.type));
|
|
40
|
+
};
|
|
41
|
+
// Wait on the condition rather than on a fixed sleep chosen to outrun the
|
|
42
|
+
// throttle: there is no margin to tune, so machine load cannot decide the
|
|
43
|
+
// outcome. Without a scheduled flush this simply never arrives.
|
|
44
|
+
const deadline = Date.now() + 2_000;
|
|
45
|
+
let types = await readTypes();
|
|
46
|
+
while (!types.includes("tool-input-available") && Date.now() < deadline) {
|
|
47
|
+
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
48
|
+
types = await readTypes();
|
|
49
|
+
}
|
|
50
|
+
partsSeenDuringTool.push(...types);
|
|
51
|
+
return { slept: 3 };
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const agent = new Agent(components.agent, {
|
|
56
|
+
name: "slow-tool",
|
|
57
|
+
languageModel: mockModel({
|
|
58
|
+
contentSteps: [
|
|
59
|
+
[
|
|
60
|
+
{
|
|
61
|
+
type: "tool-call",
|
|
62
|
+
toolCallId: "t1",
|
|
63
|
+
toolName: "sleepTool",
|
|
64
|
+
input: JSON.stringify({ seconds: 3 }),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
[{ type: "text", text: "done" }],
|
|
68
|
+
],
|
|
69
|
+
}),
|
|
70
|
+
tools: { sleepTool },
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
export const run = action({
|
|
74
|
+
args: { threadId: v.string() },
|
|
75
|
+
handler: async (ctx, { threadId }) => {
|
|
76
|
+
const r = await agent.streamText(
|
|
77
|
+
ctx,
|
|
78
|
+
{ threadId },
|
|
79
|
+
{ prompt: "go", stopWhen: stepCountIs(3) },
|
|
80
|
+
{ saveStreamDeltas: { chunking: "word", throttleMs: 50 } },
|
|
81
|
+
);
|
|
82
|
+
await r.consumeStream();
|
|
83
|
+
return { ok: true };
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
const testApi: ApiFromModules<{ fns: { run: typeof run } }>["fns"] =
|
|
88
|
+
anyApi["deltaFlush.test"] as unknown as ApiFromModules<{
|
|
89
|
+
fns: { run: typeof run };
|
|
90
|
+
}>["fns"];
|
|
91
|
+
|
|
92
|
+
describe("throttled deltas flush on time (issue #221)", () => {
|
|
93
|
+
test("the tool call is queryable while the tool is still running", async () => {
|
|
94
|
+
partsSeenDuringTool.length = 0;
|
|
95
|
+
const t = initConvexTest(schema);
|
|
96
|
+
const threadId = await t.run(async (ctx) =>
|
|
97
|
+
createThread(ctx, components.agent, { userId: "u" }),
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
await t.action(testApi.run, { threadId });
|
|
101
|
+
await t.finishAllScheduledFunctions(() => {});
|
|
102
|
+
|
|
103
|
+
expect(partsSeenDuringTool).toContain("tool-input-available");
|
|
104
|
+
expect(partsSeenDuringTool).not.toContain("tool-output-available");
|
|
105
|
+
});
|
|
106
|
+
});
|