@convex-dev/agent 0.1.8-alpha.2 → 0.1.8
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/threads.d.ts.map +1 -1
- package/dist/commonjs/component/threads.js +5 -4
- package/dist/commonjs/component/threads.js.map +1 -1
- package/dist/commonjs/component/users.d.ts +9 -0
- package/dist/commonjs/component/users.d.ts.map +1 -1
- package/dist/commonjs/component/users.js +92 -21
- package/dist/commonjs/component/users.js.map +1 -1
- package/dist/commonjs.tsbuildinfo +1 -1
- package/dist/esm/component/threads.d.ts.map +1 -1
- package/dist/esm/component/threads.js +5 -4
- package/dist/esm/component/threads.js.map +1 -1
- package/dist/esm/component/users.d.ts +9 -0
- package/dist/esm/component/users.d.ts.map +1 -1
- package/dist/esm/component/users.js +92 -21
- package/dist/esm/component/users.js.map +1 -1
- package/dist/esm.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/client/setup.test.ts +1 -2
- package/src/component/threads.test.ts +560 -0
- package/src/component/threads.ts +9 -4
- package/src/component/users.test.ts +478 -0
- package/src/component/users.ts +100 -20
|
@@ -6,6 +6,7 @@ import { vPaginationResult } from "../validators.js";
|
|
|
6
6
|
import { internal } from "./_generated/api.js";
|
|
7
7
|
import { action, internalMutation, internalQuery, mutation, query, } from "./_generated/server.js";
|
|
8
8
|
import { deleteMessage } from "./messages.js";
|
|
9
|
+
import { deleteStreamsPageForThreadId } from "./streams.js";
|
|
9
10
|
import { schema, v } from "./schema.js";
|
|
10
11
|
// Note: it only searches for users with threads
|
|
11
12
|
export const listUsersWithThreads = query({
|
|
@@ -32,15 +33,27 @@ export const deleteAllForUserId = action({
|
|
|
32
33
|
let threadsCursor = null;
|
|
33
34
|
let threadInProgress = null;
|
|
34
35
|
let messagesCursor = null;
|
|
36
|
+
let streamsInProgress = false;
|
|
37
|
+
let streamOrder = undefined;
|
|
38
|
+
let deltaCursor = undefined;
|
|
35
39
|
let isDone = false;
|
|
36
40
|
while (!isDone) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
const result = await ctx.runMutation(internal.users._deletePageForUserId, {
|
|
42
|
+
userId: args.userId,
|
|
43
|
+
messagesCursor,
|
|
44
|
+
threadInProgress,
|
|
45
|
+
threadsCursor,
|
|
46
|
+
streamsInProgress,
|
|
47
|
+
streamOrder,
|
|
48
|
+
deltaCursor,
|
|
49
|
+
});
|
|
50
|
+
messagesCursor = result.messagesCursor;
|
|
51
|
+
threadInProgress = result.threadInProgress;
|
|
52
|
+
threadsCursor = result.threadsCursor;
|
|
53
|
+
streamsInProgress = result.streamsInProgress ?? false;
|
|
54
|
+
streamOrder = result.streamOrder;
|
|
55
|
+
deltaCursor = result.deltaCursor;
|
|
56
|
+
isDone = result.isDone;
|
|
44
57
|
}
|
|
45
58
|
},
|
|
46
59
|
returns: v.null(),
|
|
@@ -55,6 +68,9 @@ export const deleteAllForUserIdAsync = mutation({
|
|
|
55
68
|
messagesCursor: null,
|
|
56
69
|
threadsCursor: null,
|
|
57
70
|
threadInProgress: null,
|
|
71
|
+
streamsInProgress: false,
|
|
72
|
+
streamOrder: undefined,
|
|
73
|
+
deltaCursor: undefined,
|
|
58
74
|
});
|
|
59
75
|
return isDone;
|
|
60
76
|
},
|
|
@@ -65,11 +81,17 @@ const deleteAllArgs = {
|
|
|
65
81
|
messagesCursor: nullable(v.string()),
|
|
66
82
|
threadsCursor: nullable(v.string()),
|
|
67
83
|
threadInProgress: nullable(v.id("threads")),
|
|
84
|
+
streamsInProgress: v.optional(v.boolean()),
|
|
85
|
+
streamOrder: v.optional(v.number()),
|
|
86
|
+
deltaCursor: v.optional(v.string()),
|
|
68
87
|
};
|
|
69
88
|
const deleteAllReturns = {
|
|
70
89
|
threadsCursor: v.string(),
|
|
71
90
|
threadInProgress: nullable(v.id("threads")),
|
|
72
91
|
messagesCursor: nullable(v.string()),
|
|
92
|
+
streamsInProgress: v.optional(v.boolean()),
|
|
93
|
+
streamOrder: v.optional(v.number()),
|
|
94
|
+
deltaCursor: v.optional(v.string()),
|
|
73
95
|
isDone: v.boolean(),
|
|
74
96
|
};
|
|
75
97
|
export const _deleteAllForUserIdAsync = internalMutation({
|
|
@@ -82,7 +104,12 @@ async function deleteAllForUserIdAsyncHandler(ctx, args) {
|
|
|
82
104
|
if (!result.isDone) {
|
|
83
105
|
await ctx.scheduler.runAfter(0, internal.users._deleteAllForUserIdAsync, {
|
|
84
106
|
userId: args.userId,
|
|
85
|
-
|
|
107
|
+
messagesCursor: result.messagesCursor,
|
|
108
|
+
threadsCursor: result.threadsCursor,
|
|
109
|
+
threadInProgress: result.threadInProgress,
|
|
110
|
+
streamsInProgress: result.streamsInProgress ?? false,
|
|
111
|
+
streamOrder: result.streamOrder,
|
|
112
|
+
deltaCursor: result.deltaCursor,
|
|
86
113
|
});
|
|
87
114
|
}
|
|
88
115
|
return result.isDone;
|
|
@@ -96,6 +123,10 @@ async function deletePageForUserId(ctx, args) {
|
|
|
96
123
|
let threadInProgress = args.threadInProgress;
|
|
97
124
|
let threadsCursor = args.threadsCursor;
|
|
98
125
|
let messagesCursor = args.messagesCursor;
|
|
126
|
+
let streamsInProgress = args.streamsInProgress ?? false;
|
|
127
|
+
let streamOrder = args.streamOrder;
|
|
128
|
+
let deltaCursor = args.deltaCursor;
|
|
129
|
+
// Phase 1: Get a thread to work on if we don't have one
|
|
99
130
|
if (!threadsCursor || !threadInProgress) {
|
|
100
131
|
const threads = await paginator(ctx.db, schema)
|
|
101
132
|
.query("threads")
|
|
@@ -109,6 +140,9 @@ async function deletePageForUserId(ctx, args) {
|
|
|
109
140
|
if (threads.page.length > 0) {
|
|
110
141
|
threadInProgress = threads.page[0]._id;
|
|
111
142
|
messagesCursor = null;
|
|
143
|
+
streamsInProgress = false;
|
|
144
|
+
streamOrder = undefined;
|
|
145
|
+
deltaCursor = undefined;
|
|
112
146
|
}
|
|
113
147
|
else {
|
|
114
148
|
return {
|
|
@@ -116,33 +150,70 @@ async function deletePageForUserId(ctx, args) {
|
|
|
116
150
|
threadsCursor,
|
|
117
151
|
threadInProgress,
|
|
118
152
|
messagesCursor,
|
|
153
|
+
streamsInProgress,
|
|
154
|
+
streamOrder,
|
|
155
|
+
deltaCursor,
|
|
119
156
|
};
|
|
120
157
|
}
|
|
121
158
|
}
|
|
122
|
-
//
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
159
|
+
// Phase 2: Delete messages for the current thread
|
|
160
|
+
if (!streamsInProgress) {
|
|
161
|
+
const messages = await paginator(ctx.db, schema)
|
|
162
|
+
.query("messages")
|
|
163
|
+
.withIndex("threadId_status_tool_order_stepOrder", (q) => q.eq("threadId", threadInProgress))
|
|
164
|
+
.order("desc")
|
|
165
|
+
.paginate({
|
|
166
|
+
numItems: 100,
|
|
167
|
+
cursor: args.messagesCursor,
|
|
168
|
+
});
|
|
169
|
+
await Promise.all(messages.page.map((m) => deleteMessage(ctx, m)));
|
|
170
|
+
if (messages.isDone) {
|
|
171
|
+
// Messages are done, move to streams deletion phase
|
|
172
|
+
streamsInProgress = true;
|
|
173
|
+
messagesCursor = null;
|
|
174
|
+
streamOrder = undefined;
|
|
175
|
+
deltaCursor = undefined;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
messagesCursor = messages.continueCursor;
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
messagesCursor,
|
|
182
|
+
threadsCursor,
|
|
183
|
+
threadInProgress,
|
|
184
|
+
streamsInProgress,
|
|
185
|
+
streamOrder,
|
|
186
|
+
deltaCursor,
|
|
187
|
+
isDone: false,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// Phase 3: Delete streams for the current thread
|
|
191
|
+
const streamResult = await deleteStreamsPageForThreadId(ctx, {
|
|
192
|
+
threadId: threadInProgress,
|
|
193
|
+
streamOrder,
|
|
194
|
+
deltaCursor,
|
|
131
195
|
});
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
// TODO: delete streams - maybe use workpool?
|
|
196
|
+
if (streamResult.isDone) {
|
|
197
|
+
// Streams are done, delete the thread and reset for next thread
|
|
135
198
|
await ctx.db.delete(threadInProgress);
|
|
136
199
|
threadInProgress = null;
|
|
137
200
|
messagesCursor = null;
|
|
201
|
+
streamsInProgress = false;
|
|
202
|
+
streamOrder = undefined;
|
|
203
|
+
deltaCursor = undefined;
|
|
138
204
|
}
|
|
139
205
|
else {
|
|
140
|
-
|
|
206
|
+
// Continue with streams deletion
|
|
207
|
+
streamOrder = streamResult.streamOrder;
|
|
208
|
+
deltaCursor = streamResult.deltaCursor;
|
|
141
209
|
}
|
|
142
210
|
return {
|
|
143
211
|
messagesCursor,
|
|
144
212
|
threadsCursor,
|
|
145
213
|
threadInProgress,
|
|
214
|
+
streamsInProgress,
|
|
215
|
+
streamOrder,
|
|
216
|
+
deltaCursor,
|
|
146
217
|
isDone: false,
|
|
147
218
|
};
|
|
148
219
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/component/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,QAAQ,EAER,KAAK,GACN,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAExC,gDAAgD;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACxC,IAAI,EAAE;QACJ,cAAc,EAAE,uBAAuB;KACxC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;aACzC,KAAK,CAAC,SAAS,CAAC;aAChB,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC7B,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aACnC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;aACpB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjC,OAAO;YACL,GAAG,OAAO;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACxE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;IAC5B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,IAAI,
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/component/users.ts"],"names":[],"mappings":"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"}
|