@convex-dev/agent 0.1.9-alpha.2 → 0.1.9-alpha.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/commonjs/component/_generated/api.d.ts +11 -3
- package/dist/commonjs/component/threads.d.ts +8 -2
- package/dist/commonjs/component/threads.d.ts.map +1 -1
- package/dist/commonjs/component/threads.js +44 -18
- package/dist/commonjs/component/threads.js.map +1 -1
- package/dist/commonjs.tsbuildinfo +1 -1
- package/dist/esm/component/_generated/api.d.ts +11 -3
- package/dist/esm/component/threads.d.ts +8 -2
- package/dist/esm/component/threads.d.ts.map +1 -1
- package/dist/esm/component/threads.js +44 -18
- package/dist/esm/component/threads.js.map +1 -1
- package/dist/esm.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/component/_generated/api.d.ts +11 -3
- package/src/component/threads.ts +48 -26
package/src/component/threads.ts
CHANGED
|
@@ -16,6 +16,7 @@ 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";
|
|
19
20
|
|
|
20
21
|
function publicThreadOrNull(thread: Doc<"threads"> | null): ThreadDoc | null {
|
|
21
22
|
if (thread === null) {
|
|
@@ -100,29 +101,17 @@ export const updateThread = mutation({
|
|
|
100
101
|
|
|
101
102
|
// TODO: delete thread
|
|
102
103
|
|
|
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
|
-
|
|
115
104
|
/**
|
|
116
105
|
* Use this to delete a thread and everything it contains.
|
|
117
106
|
* It will try to delete all pages synchronously.
|
|
118
107
|
* If it times out or fails, you'll have to run it again.
|
|
119
108
|
*/
|
|
120
109
|
export const deleteAllForThreadIdSync = action({
|
|
121
|
-
args:
|
|
110
|
+
args: { threadId: v.id("threads"), limit: v.optional(v.number()) },
|
|
122
111
|
handler: async (ctx, args) => {
|
|
123
|
-
let cursor =
|
|
112
|
+
let cursor: string | undefined = undefined;
|
|
124
113
|
while (true) {
|
|
125
|
-
const result = await ctx.runMutation(
|
|
114
|
+
const result: DeleteThreadReturns = await ctx.runMutation(
|
|
126
115
|
internal.threads._deletePageForThreadId,
|
|
127
116
|
{ threadId: args.threadId, cursor, limit: args.limit }
|
|
128
117
|
);
|
|
@@ -138,6 +127,22 @@ export const deleteAllForThreadIdSync = action({
|
|
|
138
127
|
returns: v.null(),
|
|
139
128
|
});
|
|
140
129
|
|
|
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
|
+
|
|
141
146
|
export const _deletePageForThreadId = internalMutation({
|
|
142
147
|
args: deleteThreadArgs,
|
|
143
148
|
handler: deletePageForThreadIdHandler,
|
|
@@ -151,22 +156,39 @@ export const _deletePageForThreadId = internalMutation({
|
|
|
151
156
|
export const deleteAllForThreadIdAsync = mutation({
|
|
152
157
|
args: deleteThreadArgs,
|
|
153
158
|
handler: async (ctx, args) => {
|
|
154
|
-
|
|
155
|
-
|
|
159
|
+
let messagesResult = {
|
|
160
|
+
isDone: args.messagesDone ?? false,
|
|
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) {
|
|
156
180
|
await ctx.scheduler.runAfter(0, api.threads.deleteAllForThreadIdAsync, {
|
|
157
181
|
threadId: args.threadId,
|
|
158
|
-
cursor:
|
|
182
|
+
cursor: messagesResult.cursor,
|
|
183
|
+
messagesDone: messagesResult.isDone,
|
|
184
|
+
streamsDone: streamResult.isDone,
|
|
185
|
+
streamOrder: streamResult.streamOrder,
|
|
186
|
+
deltaCursor: streamResult.deltaCursor,
|
|
159
187
|
});
|
|
160
188
|
}
|
|
161
|
-
|
|
162
|
-
await ctx.scheduler.runAfter(
|
|
163
|
-
0,
|
|
164
|
-
api.streams.deleteAllStreamsForThreadIdSync,
|
|
165
|
-
{ threadId: args.threadId }
|
|
166
|
-
);
|
|
167
|
-
return result;
|
|
189
|
+
return { isDone };
|
|
168
190
|
},
|
|
169
|
-
returns:
|
|
191
|
+
returns: v.object({ isDone: v.boolean() }),
|
|
170
192
|
});
|
|
171
193
|
|
|
172
194
|
async function deletePageForThreadIdHandler(
|