@convex-dev/agent 0.1.9-alpha.12 → 0.1.9-alpha.2
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/README.md +3 -3
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +1 -1
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/client/types.d.ts +2 -0
- package/dist/commonjs/client/types.d.ts.map +1 -1
- package/dist/commonjs/component/_generated/api.d.ts +3 -11
- package/dist/commonjs/component/streams.d.ts +3 -3
- package/dist/commonjs/component/streams.d.ts.map +1 -1
- package/dist/commonjs/component/streams.js +6 -10
- package/dist/commonjs/component/streams.js.map +1 -1
- package/dist/commonjs/component/threads.d.ts +2 -8
- package/dist/commonjs/component/threads.d.ts.map +1 -1
- package/dist/commonjs/component/threads.js +18 -44
- package/dist/commonjs/component/threads.js.map +1 -1
- package/dist/commonjs/component/vector/tables.d.ts +2 -4
- package/dist/commonjs/component/vector/tables.d.ts.map +1 -1
- package/dist/commonjs/react/deltas.d.ts.map +1 -1
- package/dist/commonjs/react/deltas.js +0 -1
- package/dist/commonjs/react/deltas.js.map +1 -1
- package/dist/commonjs.tsbuildinfo +1 -1
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/types.d.ts +2 -0
- package/dist/esm/client/types.d.ts.map +1 -1
- package/dist/esm/component/_generated/api.d.ts +3 -11
- package/dist/esm/component/streams.d.ts +3 -3
- package/dist/esm/component/streams.d.ts.map +1 -1
- package/dist/esm/component/streams.js +6 -10
- package/dist/esm/component/streams.js.map +1 -1
- package/dist/esm/component/threads.d.ts +2 -8
- package/dist/esm/component/threads.d.ts.map +1 -1
- package/dist/esm/component/threads.js +18 -44
- package/dist/esm/component/threads.js.map +1 -1
- package/dist/esm/component/vector/tables.d.ts +2 -4
- package/dist/esm/component/vector/tables.d.ts.map +1 -1
- package/dist/esm/react/deltas.d.ts.map +1 -1
- package/dist/esm/react/deltas.js +0 -1
- package/dist/esm/react/deltas.js.map +1 -1
- package/dist/esm.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/client/index.ts +2 -1
- package/src/client/types.ts +2 -0
- package/src/component/_generated/api.d.ts +3 -11
- package/src/component/streams.ts +6 -11
- package/src/component/threads.ts +26 -48
- package/src/react/deltas.ts +0 -1
package/src/client/types.ts
CHANGED
|
@@ -48,6 +48,8 @@ import type { StreamingOptions } from "./streaming.js";
|
|
|
48
48
|
* automatically with thread.generateText, or directly via search.
|
|
49
49
|
*/
|
|
50
50
|
export type ContextOptions = {
|
|
51
|
+
/** @deprecated Use excludeToolMessages instead. */
|
|
52
|
+
includeToolCalls?: boolean;
|
|
51
53
|
/**
|
|
52
54
|
* Whether to include tool messages in the context.
|
|
53
55
|
* By default, tool calls and results are not included.
|
|
@@ -1663,21 +1663,13 @@ export type Mounts = {
|
|
|
1663
1663
|
deleteAllForThreadIdAsync: FunctionReference<
|
|
1664
1664
|
"mutation",
|
|
1665
1665
|
"public",
|
|
1666
|
-
{
|
|
1667
|
-
|
|
1668
|
-
deltaCursor?: string;
|
|
1669
|
-
limit?: number;
|
|
1670
|
-
messagesDone?: boolean;
|
|
1671
|
-
streamOrder?: number;
|
|
1672
|
-
streamsDone?: boolean;
|
|
1673
|
-
threadId: string;
|
|
1674
|
-
},
|
|
1675
|
-
{ isDone: boolean }
|
|
1666
|
+
{ cursor?: string; limit?: number; threadId: string },
|
|
1667
|
+
{ cursor: string; isDone: boolean }
|
|
1676
1668
|
>;
|
|
1677
1669
|
deleteAllForThreadIdSync: FunctionReference<
|
|
1678
1670
|
"action",
|
|
1679
1671
|
"public",
|
|
1680
|
-
{ limit?: number; threadId: string },
|
|
1672
|
+
{ cursor?: string; limit?: number; threadId: string },
|
|
1681
1673
|
null
|
|
1682
1674
|
>;
|
|
1683
1675
|
getThread: FunctionReference<
|
package/src/component/streams.ts
CHANGED
|
@@ -17,15 +17,11 @@ import {
|
|
|
17
17
|
import schema from "./schema.js";
|
|
18
18
|
import { stream } from "convex-helpers/server/stream";
|
|
19
19
|
import { mergedStream } from "convex-helpers/server/stream";
|
|
20
|
-
import { paginator } from "convex-helpers/server/pagination";
|
|
21
|
-
|
|
22
|
-
const SECOND = 1000;
|
|
23
|
-
const MINUTE = 60 * SECOND;
|
|
24
20
|
|
|
25
21
|
const MAX_DELTAS_PER_REQUEST = 1000;
|
|
26
22
|
const MAX_DELTAS_PER_STREAM = 100;
|
|
27
|
-
const TIMEOUT_INTERVAL =
|
|
28
|
-
const DELETE_STREAM_DELAY =
|
|
23
|
+
const TIMEOUT_INTERVAL = 1000 * 60; // 1 minute
|
|
24
|
+
const DELETE_STREAM_DELAY = 1000 * 60 * 5; // 5 minutes
|
|
29
25
|
|
|
30
26
|
const deltaValidator = schema.tables.streamDeltas.validator;
|
|
31
27
|
|
|
@@ -234,7 +230,7 @@ async function deletePageForStreamId(
|
|
|
234
230
|
ctx: MutationCtx,
|
|
235
231
|
args: { streamId: Id<"streamingMessages">; cursor?: string }
|
|
236
232
|
) {
|
|
237
|
-
const deltas = await
|
|
233
|
+
const deltas = await ctx.db
|
|
238
234
|
.query("streamDeltas")
|
|
239
235
|
.withIndex("streamId_start_end", (q) => q.eq("streamId", args.streamId))
|
|
240
236
|
.paginate({
|
|
@@ -242,9 +238,6 @@ async function deletePageForStreamId(
|
|
|
242
238
|
cursor: args.cursor ?? null,
|
|
243
239
|
});
|
|
244
240
|
await Promise.all(deltas.page.map((d) => ctx.db.delete(d._id)));
|
|
245
|
-
if (deltas.isDone) {
|
|
246
|
-
await ctx.db.delete(args.streamId);
|
|
247
|
-
}
|
|
248
241
|
return deltas;
|
|
249
242
|
}
|
|
250
243
|
|
|
@@ -284,12 +277,13 @@ export async function deleteStreamsPageForThreadId(
|
|
|
284
277
|
cursor: deltaCursor,
|
|
285
278
|
});
|
|
286
279
|
if (result.isDone) {
|
|
280
|
+
await ctx.db.delete(streamMessage._id);
|
|
287
281
|
deltaCursor = undefined;
|
|
288
282
|
}
|
|
289
283
|
return {
|
|
290
284
|
isDone: false,
|
|
291
285
|
streamOrder: streamMessage.order,
|
|
292
|
-
deltaCursor,
|
|
286
|
+
deltaCursor: result.continueCursor,
|
|
293
287
|
};
|
|
294
288
|
}
|
|
295
289
|
|
|
@@ -348,6 +342,7 @@ export const deleteStreamSync = mutation({
|
|
|
348
342
|
cursor: deltas.continueCursor,
|
|
349
343
|
});
|
|
350
344
|
}
|
|
345
|
+
await ctx.db.delete(args.streamId);
|
|
351
346
|
},
|
|
352
347
|
});
|
|
353
348
|
|
package/src/component/threads.ts
CHANGED
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
} from "./_generated/server.js";
|
|
17
17
|
import { deleteMessage } from "./messages.js";
|
|
18
18
|
import { schema, v } from "./schema.js";
|
|
19
|
-
import { deleteStreamsPageForThreadId } from "./streams.js";
|
|
20
19
|
|
|
21
20
|
function publicThreadOrNull(thread: Doc<"threads"> | null): ThreadDoc | null {
|
|
22
21
|
if (thread === null) {
|
|
@@ -101,17 +100,29 @@ export const updateThread = mutation({
|
|
|
101
100
|
|
|
102
101
|
// TODO: delete thread
|
|
103
102
|
|
|
103
|
+
const deleteThreadArgs = {
|
|
104
|
+
threadId: v.id("threads"),
|
|
105
|
+
cursor: v.optional(v.string()),
|
|
106
|
+
limit: v.optional(v.number()),
|
|
107
|
+
};
|
|
108
|
+
type DeleteThreadArgs = ObjectType<typeof deleteThreadArgs>;
|
|
109
|
+
const deleteThreadReturns = {
|
|
110
|
+
cursor: v.string(),
|
|
111
|
+
isDone: v.boolean(),
|
|
112
|
+
};
|
|
113
|
+
type DeleteThreadReturns = ObjectType<typeof deleteThreadReturns>;
|
|
114
|
+
|
|
104
115
|
/**
|
|
105
116
|
* Use this to delete a thread and everything it contains.
|
|
106
117
|
* It will try to delete all pages synchronously.
|
|
107
118
|
* If it times out or fails, you'll have to run it again.
|
|
108
119
|
*/
|
|
109
120
|
export const deleteAllForThreadIdSync = action({
|
|
110
|
-
args:
|
|
121
|
+
args: deleteThreadArgs,
|
|
111
122
|
handler: async (ctx, args) => {
|
|
112
|
-
let cursor
|
|
123
|
+
let cursor = args.cursor;
|
|
113
124
|
while (true) {
|
|
114
|
-
const result
|
|
125
|
+
const result = await ctx.runMutation(
|
|
115
126
|
internal.threads._deletePageForThreadId,
|
|
116
127
|
{ threadId: args.threadId, cursor, limit: args.limit }
|
|
117
128
|
);
|
|
@@ -127,22 +138,6 @@ export const deleteAllForThreadIdSync = action({
|
|
|
127
138
|
returns: v.null(),
|
|
128
139
|
});
|
|
129
140
|
|
|
130
|
-
const deleteThreadArgs = {
|
|
131
|
-
threadId: v.id("threads"),
|
|
132
|
-
cursor: v.optional(v.string()),
|
|
133
|
-
messagesDone: v.optional(v.boolean()),
|
|
134
|
-
streamsDone: v.optional(v.boolean()),
|
|
135
|
-
streamOrder: v.optional(v.number()),
|
|
136
|
-
deltaCursor: v.optional(v.string()),
|
|
137
|
-
limit: v.optional(v.number()),
|
|
138
|
-
};
|
|
139
|
-
type DeleteThreadArgs = ObjectType<typeof deleteThreadArgs>;
|
|
140
|
-
const deleteThreadReturns = {
|
|
141
|
-
cursor: v.string(),
|
|
142
|
-
isDone: v.boolean(),
|
|
143
|
-
};
|
|
144
|
-
type DeleteThreadReturns = ObjectType<typeof deleteThreadReturns>;
|
|
145
|
-
|
|
146
141
|
export const _deletePageForThreadId = internalMutation({
|
|
147
142
|
args: deleteThreadArgs,
|
|
148
143
|
handler: deletePageForThreadIdHandler,
|
|
@@ -156,39 +151,22 @@ export const _deletePageForThreadId = internalMutation({
|
|
|
156
151
|
export const deleteAllForThreadIdAsync = mutation({
|
|
157
152
|
args: deleteThreadArgs,
|
|
158
153
|
handler: async (ctx, args) => {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
cursor: args.cursor,
|
|
162
|
-
};
|
|
163
|
-
if (!args.messagesDone) {
|
|
164
|
-
messagesResult = await deletePageForThreadIdHandler(ctx, args);
|
|
165
|
-
}
|
|
166
|
-
let streamResult = {
|
|
167
|
-
isDone: args.streamsDone ?? false,
|
|
168
|
-
streamOrder: args.streamOrder,
|
|
169
|
-
deltaCursor: args.deltaCursor,
|
|
170
|
-
};
|
|
171
|
-
if (!args.streamsDone) {
|
|
172
|
-
streamResult = await deleteStreamsPageForThreadId(ctx, {
|
|
173
|
-
threadId: args.threadId,
|
|
174
|
-
streamOrder: args.streamOrder,
|
|
175
|
-
deltaCursor: args.deltaCursor,
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
const isDone = messagesResult.isDone && streamResult.isDone;
|
|
179
|
-
if (!isDone) {
|
|
154
|
+
const result = await deletePageForThreadIdHandler(ctx, args);
|
|
155
|
+
if (!result.isDone) {
|
|
180
156
|
await ctx.scheduler.runAfter(0, api.threads.deleteAllForThreadIdAsync, {
|
|
181
157
|
threadId: args.threadId,
|
|
182
|
-
cursor:
|
|
183
|
-
messagesDone: messagesResult.isDone,
|
|
184
|
-
streamsDone: streamResult.isDone,
|
|
185
|
-
streamOrder: streamResult.streamOrder,
|
|
186
|
-
deltaCursor: streamResult.deltaCursor,
|
|
158
|
+
cursor: result.cursor,
|
|
187
159
|
});
|
|
188
160
|
}
|
|
189
|
-
|
|
161
|
+
// Kick off the streams deletion
|
|
162
|
+
await ctx.scheduler.runAfter(
|
|
163
|
+
0,
|
|
164
|
+
api.streams.deleteAllStreamsForThreadIdSync,
|
|
165
|
+
{ threadId: args.threadId }
|
|
166
|
+
);
|
|
167
|
+
return result;
|
|
190
168
|
},
|
|
191
|
-
returns:
|
|
169
|
+
returns: deleteThreadReturns,
|
|
192
170
|
});
|
|
193
171
|
|
|
194
172
|
async function deletePageForThreadIdHandler(
|
package/src/react/deltas.ts
CHANGED