@convex-dev/agent 0.1.10 → 0.1.11

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.
Files changed (132) hide show
  1. package/dist/esm/client/index.d.ts.map +1 -1
  2. package/dist/esm/client/index.js +25 -24
  3. package/dist/esm/client/index.js.map +1 -1
  4. package/dist/esm/mapping.d.ts +1 -0
  5. package/dist/esm/mapping.d.ts.map +1 -1
  6. package/dist/esm/mapping.js +2 -2
  7. package/dist/esm/mapping.js.map +1 -1
  8. package/dist/esm.tsbuildinfo +1 -1
  9. package/package.json +23 -53
  10. package/src/client/index.ts +27 -27
  11. package/src/mapping.ts +9 -2
  12. package/dist/commonjs/client/_generated/_ignore.d.ts +0 -1
  13. package/dist/commonjs/client/_generated/_ignore.d.ts.map +0 -1
  14. package/dist/commonjs/client/_generated/_ignore.js +0 -3
  15. package/dist/commonjs/client/_generated/_ignore.js.map +0 -1
  16. package/dist/commonjs/client/createTool.d.ts +0 -47
  17. package/dist/commonjs/client/createTool.d.ts.map +0 -1
  18. package/dist/commonjs/client/createTool.js +0 -49
  19. package/dist/commonjs/client/createTool.js.map +0 -1
  20. package/dist/commonjs/client/files.d.ts +0 -56
  21. package/dist/commonjs/client/files.d.ts.map +0 -1
  22. package/dist/commonjs/client/files.js +0 -129
  23. package/dist/commonjs/client/files.js.map +0 -1
  24. package/dist/commonjs/client/index.d.ts +0 -1355
  25. package/dist/commonjs/client/index.d.ts.map +0 -1
  26. package/dist/commonjs/client/index.js +0 -1169
  27. package/dist/commonjs/client/index.js.map +0 -1
  28. package/dist/commonjs/client/streaming.d.ts +0 -57
  29. package/dist/commonjs/client/streaming.d.ts.map +0 -1
  30. package/dist/commonjs/client/streaming.js +0 -148
  31. package/dist/commonjs/client/streaming.js.map +0 -1
  32. package/dist/commonjs/client/types.d.ts +0 -352
  33. package/dist/commonjs/client/types.d.ts.map +0 -1
  34. package/dist/commonjs/client/types.js +0 -3
  35. package/dist/commonjs/client/types.js.map +0 -1
  36. package/dist/commonjs/component/_generated/api.d.ts +0 -1938
  37. package/dist/commonjs/component/_generated/api.d.ts.map +0 -1
  38. package/dist/commonjs/component/_generated/api.js +0 -25
  39. package/dist/commonjs/component/_generated/api.js.map +0 -1
  40. package/dist/commonjs/component/_generated/dataModel.d.ts +0 -60
  41. package/dist/commonjs/component/_generated/server.d.ts +0 -149
  42. package/dist/commonjs/component/_generated/server.d.ts.map +0 -1
  43. package/dist/commonjs/component/_generated/server.js +0 -77
  44. package/dist/commonjs/component/_generated/server.js.map +0 -1
  45. package/dist/commonjs/component/apiKeys.d.ts +0 -11
  46. package/dist/commonjs/component/apiKeys.d.ts.map +0 -1
  47. package/dist/commonjs/component/apiKeys.js +0 -72
  48. package/dist/commonjs/component/apiKeys.js.map +0 -1
  49. package/dist/commonjs/component/convex.config.d.ts +0 -3
  50. package/dist/commonjs/component/convex.config.d.ts.map +0 -1
  51. package/dist/commonjs/component/convex.config.js +0 -5
  52. package/dist/commonjs/component/convex.config.js.map +0 -1
  53. package/dist/commonjs/component/files.d.ts +0 -90
  54. package/dist/commonjs/component/files.d.ts.map +0 -1
  55. package/dist/commonjs/component/files.js +0 -157
  56. package/dist/commonjs/component/files.js.map +0 -1
  57. package/dist/commonjs/component/messages.d.ts +0 -1479
  58. package/dist/commonjs/component/messages.d.ts.map +0 -1
  59. package/dist/commonjs/component/messages.js +0 -483
  60. package/dist/commonjs/component/messages.js.map +0 -1
  61. package/dist/commonjs/component/schema.d.ts +0 -4582
  62. package/dist/commonjs/component/schema.d.ts.map +0 -1
  63. package/dist/commonjs/component/schema.js +0 -167
  64. package/dist/commonjs/component/schema.js.map +0 -1
  65. package/dist/commonjs/component/streams.d.ts +0 -242
  66. package/dist/commonjs/component/streams.d.ts.map +0 -1
  67. package/dist/commonjs/component/streams.js +0 -323
  68. package/dist/commonjs/component/streams.js.map +0 -1
  69. package/dist/commonjs/component/threads.d.ts +0 -101
  70. package/dist/commonjs/component/threads.d.ts.map +0 -1
  71. package/dist/commonjs/component/threads.js +0 -188
  72. package/dist/commonjs/component/threads.js.map +0 -1
  73. package/dist/commonjs/component/users.d.ts +0 -52
  74. package/dist/commonjs/component/users.d.ts.map +0 -1
  75. package/dist/commonjs/component/users.js +0 -233
  76. package/dist/commonjs/component/users.js.map +0 -1
  77. package/dist/commonjs/component/vector/index.d.ts +0 -61
  78. package/dist/commonjs/component/vector/index.d.ts.map +0 -1
  79. package/dist/commonjs/component/vector/index.js +0 -153
  80. package/dist/commonjs/component/vector/index.js.map +0 -1
  81. package/dist/commonjs/component/vector/tables.d.ts +0 -58
  82. package/dist/commonjs/component/vector/tables.d.ts.map +0 -1
  83. package/dist/commonjs/component/vector/tables.js +0 -62
  84. package/dist/commonjs/component/vector/tables.js.map +0 -1
  85. package/dist/commonjs/mapping.d.ts +0 -50
  86. package/dist/commonjs/mapping.d.ts.map +0 -1
  87. package/dist/commonjs/mapping.js +0 -272
  88. package/dist/commonjs/mapping.js.map +0 -1
  89. package/dist/commonjs/package.json +0 -3
  90. package/dist/commonjs/react/deltas.d.ts +0 -29
  91. package/dist/commonjs/react/deltas.d.ts.map +0 -1
  92. package/dist/commonjs/react/deltas.js +0 -274
  93. package/dist/commonjs/react/deltas.js.map +0 -1
  94. package/dist/commonjs/react/index.d.ts +0 -95
  95. package/dist/commonjs/react/index.d.ts.map +0 -1
  96. package/dist/commonjs/react/index.js +0 -219
  97. package/dist/commonjs/react/index.js.map +0 -1
  98. package/dist/commonjs/react/optimisticallySendMessage.d.ts +0 -8
  99. package/dist/commonjs/react/optimisticallySendMessage.d.ts.map +0 -1
  100. package/dist/commonjs/react/optimisticallySendMessage.js +0 -43
  101. package/dist/commonjs/react/optimisticallySendMessage.js.map +0 -1
  102. package/dist/commonjs/react/toUIMessages.d.ts +0 -13
  103. package/dist/commonjs/react/toUIMessages.d.ts.map +0 -1
  104. package/dist/commonjs/react/toUIMessages.js +0 -149
  105. package/dist/commonjs/react/toUIMessages.js.map +0 -1
  106. package/dist/commonjs/react/types.d.ts +0 -26
  107. package/dist/commonjs/react/types.d.ts.map +0 -1
  108. package/dist/commonjs/react/types.js +0 -3
  109. package/dist/commonjs/react/types.js.map +0 -1
  110. package/dist/commonjs/react/useSmoothText.d.ts +0 -20
  111. package/dist/commonjs/react/useSmoothText.d.ts.map +0 -1
  112. package/dist/commonjs/react/useSmoothText.js +0 -54
  113. package/dist/commonjs/react/useSmoothText.js.map +0 -1
  114. package/dist/commonjs/shared.d.ts +0 -10
  115. package/dist/commonjs/shared.d.ts.map +0 -1
  116. package/dist/commonjs/shared.js +0 -35
  117. package/dist/commonjs/shared.js.map +0 -1
  118. package/dist/commonjs/validators.d.ts +0 -5716
  119. package/dist/commonjs/validators.d.ts.map +0 -1
  120. package/dist/commonjs/validators.js +0 -319
  121. package/dist/commonjs/validators.js.map +0 -1
  122. package/dist/commonjs/vitest.config.d.ts +0 -3
  123. package/dist/commonjs/vitest.config.d.ts.map +0 -1
  124. package/dist/commonjs/vitest.config.js +0 -9
  125. package/dist/commonjs/vitest.config.js.map +0 -1
  126. package/dist/commonjs.tsbuildinfo +0 -1
  127. package/dist/esm/vitest.config.d.ts +0 -3
  128. package/dist/esm/vitest.config.d.ts.map +0 -1
  129. package/dist/esm/vitest.config.js +0 -7
  130. package/dist/esm/vitest.config.js.map +0 -1
  131. package/react/package.json +0 -5
  132. package/validators/package.json +0 -5
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/component/messages.ts"],"names":[],"mappings":"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"}
@@ -1,483 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.textSearch = exports._fetchSearchMessages = exports.searchMessages = exports.getThreadMessages = exports.getMessagesByIds = exports.listMessagesByThreadId = exports.updateMessage = exports.commitMessage = exports.rollbackMessage = exports.addMessages = exports.messageStatuses = exports.updateThread = exports.getThread = exports.listThreadsByUserId = void 0;
4
- exports.deleteMessage = deleteMessage;
5
- exports.getMaxMessage = getMaxMessage;
6
- const convex_helpers_1 = require("convex-helpers");
7
- const stream_1 = require("convex-helpers/server/stream");
8
- const server_1 = require("convex/server");
9
- const shared_js_1 = require("../shared.js");
10
- const validators_js_1 = require("../validators.js");
11
- const api_js_1 = require("./_generated/api.js");
12
- const server_js_1 = require("./_generated/server.js");
13
- const schema_js_1 = require("./schema.js");
14
- const threads_js_1 = require("./threads.js");
15
- const index_js_1 = require("./vector/index.js");
16
- const tables_js_1 = require("./vector/tables.js");
17
- /** @deprecated Use *.threads.listMessagesByThreadId instead. */
18
- exports.listThreadsByUserId = threads_js_1.listThreadsByUserId;
19
- /** @deprecated Use *.threads.getThread */
20
- exports.getThread = threads_js_1.getThread;
21
- /** @deprecated Use *.threads.updateThread instead */
22
- exports.updateThread = threads_js_1.updateThread;
23
- function publicMessage(message) {
24
- return (0, convex_helpers_1.omit)(message, ["parentMessageId", "stepId", "files"]);
25
- }
26
- async function deleteMessage(ctx, messageDoc) {
27
- await ctx.db.delete(messageDoc._id);
28
- if (messageDoc.embeddingId) {
29
- await ctx.db.delete(messageDoc.embeddingId);
30
- }
31
- for (const fileId of messageDoc.fileIds ?? []) {
32
- if (!fileId)
33
- continue;
34
- const file = await ctx.db.get(fileId);
35
- if (file) {
36
- await ctx.db.patch(fileId, { refcount: file.refcount - 1 });
37
- }
38
- }
39
- }
40
- exports.messageStatuses = schema_js_1.vMessageDoc.fields.status.members.map((m) => m.value);
41
- const addMessagesArgs = {
42
- userId: schema_js_1.v.optional(schema_js_1.v.string()),
43
- threadId: schema_js_1.v.id("threads"),
44
- promptMessageId: schema_js_1.v.optional(schema_js_1.v.id("messages")),
45
- agentName: schema_js_1.v.optional(schema_js_1.v.string()),
46
- messages: schema_js_1.v.array(validators_js_1.vMessageWithMetadataInternal),
47
- embeddings: schema_js_1.v.optional(validators_js_1.vMessageEmbeddings),
48
- pending: schema_js_1.v.optional(schema_js_1.v.boolean()),
49
- failPendingSteps: schema_js_1.v.optional(schema_js_1.v.boolean()),
50
- };
51
- exports.addMessages = (0, server_js_1.mutation)({
52
- args: addMessagesArgs,
53
- handler: addMessagesHandler,
54
- returns: schema_js_1.v.object({
55
- messages: schema_js_1.v.array(schema_js_1.vMessageDoc),
56
- }),
57
- });
58
- async function addMessagesHandler(ctx, args) {
59
- let userId = args.userId;
60
- const threadId = args.threadId;
61
- if (!userId && args.threadId) {
62
- const thread = await ctx.db.get(args.threadId);
63
- (0, convex_helpers_1.assert)(thread, `Thread ${args.threadId} not found`);
64
- userId = thread.userId;
65
- }
66
- const { embeddings, failPendingSteps, pending, messages, promptMessageId, ...rest } = args;
67
- const parentMessage = promptMessageId && (await ctx.db.get(promptMessageId));
68
- if (failPendingSteps) {
69
- (0, convex_helpers_1.assert)(args.threadId, "threadId is required to fail pending steps");
70
- const pendingMessages = await ctx.db
71
- .query("messages")
72
- .withIndex("threadId_status_tool_order_stepOrder", (q) => q.eq("threadId", threadId).eq("status", "pending"))
73
- .collect();
74
- await Promise.all(pendingMessages
75
- .filter((m) => !parentMessage || m.order === parentMessage.order)
76
- .map((m) => ctx.db.patch(m._id, { status: "failed", error: "Restarting" })));
77
- }
78
- let order, stepOrder;
79
- let fail = false;
80
- if (promptMessageId) {
81
- (0, convex_helpers_1.assert)(parentMessage, `Parent message ${promptMessageId} not found`);
82
- if (parentMessage.status === "failed") {
83
- fail = true;
84
- }
85
- order = parentMessage.order;
86
- // Defend against there being existing messages with this parent.
87
- const maxMessage = await getMaxMessage(ctx, threadId, order);
88
- stepOrder = maxMessage?.stepOrder ?? parentMessage.stepOrder;
89
- }
90
- else {
91
- const maxMessage = await getMaxMessage(ctx, threadId);
92
- order = maxMessage ? maxMessage.order + 1 : 0;
93
- stepOrder = -1;
94
- }
95
- const toReturn = [];
96
- if (embeddings) {
97
- (0, convex_helpers_1.assert)(embeddings.vectors.length === messages.length, "embeddings.vectors.length must match messages.length");
98
- }
99
- for (let i = 0; i < messages.length; i++) {
100
- const message = messages[i];
101
- let embeddingId;
102
- if (embeddings && embeddings.vectors[i]) {
103
- embeddingId = await (0, index_js_1.insertVector)(ctx, embeddings.dimension, {
104
- vector: embeddings.vectors[i],
105
- model: embeddings.model,
106
- table: "messages",
107
- userId,
108
- threadId,
109
- });
110
- }
111
- stepOrder++;
112
- const messageId = await ctx.db.insert("messages", {
113
- ...rest,
114
- ...message,
115
- embeddingId,
116
- parentMessageId: promptMessageId,
117
- userId,
118
- order,
119
- tool: (0, shared_js_1.isTool)(message.message),
120
- text: (0, shared_js_1.extractText)(message.message),
121
- status: fail ? "failed" : pending ? "pending" : "success",
122
- error: fail ? "Parent message failed" : undefined,
123
- stepOrder,
124
- });
125
- // Let's just not set the id field and have it set only in explicit cases.
126
- // if (!message.id) {
127
- // await ctx.db.patch(messageId, {
128
- // id: messageId,
129
- // });
130
- // }
131
- for (const fileId of message.fileIds ?? []) {
132
- if (!fileId)
133
- continue;
134
- await ctx.db.patch(fileId, {
135
- refcount: (await ctx.db.get(fileId)).refcount + 1,
136
- });
137
- }
138
- // TODO: delete the associated stream data for the order/stepOrder
139
- toReturn.push((await ctx.db.get(messageId)));
140
- }
141
- return { messages: toReturn.map(publicMessage) };
142
- }
143
- // exported for tests
144
- async function getMaxMessage(ctx, threadId, order) {
145
- return orderedMessagesStream(ctx, threadId, "desc", order).first();
146
- }
147
- function orderedMessagesStream(ctx, threadId, sortOrder, order) {
148
- return (0, stream_1.mergedStream)([true, false].flatMap((tool) => exports.messageStatuses.map((status) => (0, stream_1.stream)(ctx.db, schema_js_1.schema)
149
- .query("messages")
150
- .withIndex("threadId_status_tool_order_stepOrder", (q) => {
151
- const qq = q
152
- .eq("threadId", threadId)
153
- .eq("status", status)
154
- .eq("tool", tool);
155
- if (order) {
156
- return qq.eq("order", order);
157
- }
158
- return qq;
159
- })
160
- .order(sortOrder))), ["order", "stepOrder"]);
161
- }
162
- exports.rollbackMessage = (0, server_js_1.mutation)({
163
- args: {
164
- messageId: schema_js_1.v.id("messages"),
165
- error: schema_js_1.v.optional(schema_js_1.v.string()),
166
- },
167
- returns: schema_js_1.v.null(),
168
- handler: async (ctx, { messageId, error }) => {
169
- const message = await ctx.db.get(messageId);
170
- (0, convex_helpers_1.assert)(message, `Message ${messageId} not found`);
171
- const messages = await orderedMessagesStream(ctx, message.threadId, "asc", message.order).collect();
172
- for (const m of messages) {
173
- if (m.status === "pending") {
174
- await ctx.db.patch(m._id, { status: "failed", error });
175
- }
176
- }
177
- await ctx.db.patch(messageId, {
178
- status: "failed",
179
- error: error,
180
- });
181
- },
182
- });
183
- exports.commitMessage = (0, server_js_1.mutation)({
184
- args: {
185
- messageId: schema_js_1.v.id("messages"),
186
- },
187
- returns: schema_js_1.v.null(),
188
- handler: commitMessageHandler,
189
- });
190
- exports.updateMessage = (0, server_js_1.mutation)({
191
- args: {
192
- messageId: schema_js_1.v.id("messages"),
193
- patch: schema_js_1.v.object({
194
- message: schema_js_1.v.optional(schema_js_1.vMessageDoc.fields.message),
195
- status: schema_js_1.v.optional(validators_js_1.vMessageStatus),
196
- error: schema_js_1.v.optional(schema_js_1.v.string()),
197
- }),
198
- },
199
- returns: schema_js_1.vMessageDoc,
200
- handler: async (ctx, args) => {
201
- const message = await ctx.db.get(args.messageId);
202
- (0, convex_helpers_1.assert)(message, `Message ${args.messageId} not found`);
203
- const patch = {
204
- ...args.patch,
205
- };
206
- if (args.patch.message !== undefined) {
207
- patch.message = args.patch.message;
208
- patch.tool = (0, shared_js_1.isTool)(args.patch.message);
209
- patch.text = (0, shared_js_1.extractText)(args.patch.message);
210
- }
211
- await ctx.db.patch(args.messageId, patch);
212
- return publicMessage((await ctx.db.get(args.messageId)));
213
- },
214
- });
215
- async function commitMessageHandler(ctx, { messageId }) {
216
- const message = await ctx.db.get(messageId);
217
- (0, convex_helpers_1.assert)(message, `Message ${messageId} not found`);
218
- const order = message.order;
219
- const messages = await (0, stream_1.mergedStream)([true, false].map((tool) => (0, stream_1.stream)(ctx.db, schema_js_1.schema)
220
- .query("messages")
221
- .withIndex("threadId_status_tool_order_stepOrder", (q) => q
222
- .eq("threadId", message.threadId)
223
- .eq("status", "pending")
224
- .eq("tool", tool)
225
- .eq("order", order))), ["order", "stepOrder"]).collect();
226
- for (const message of messages) {
227
- await ctx.db.patch(message._id, { status: "success" });
228
- }
229
- }
230
- exports.listMessagesByThreadId = (0, server_js_1.query)({
231
- args: {
232
- threadId: schema_js_1.v.id("threads"),
233
- excludeToolMessages: schema_js_1.v.optional(schema_js_1.v.boolean()),
234
- /** @deprecated Use excludeToolMessages instead. */
235
- isTool: schema_js_1.v.optional(schema_js_1.v.literal("use excludeToolMessages instead of this")),
236
- /** What order to sort the messages in. To get the latest, use "desc". */
237
- order: schema_js_1.v.union(schema_js_1.v.literal("asc"), schema_js_1.v.literal("desc")),
238
- paginationOpts: schema_js_1.v.optional(server_1.paginationOptsValidator),
239
- statuses: schema_js_1.v.optional(schema_js_1.v.array(validators_js_1.vMessageStatus)),
240
- upToAndIncludingMessageId: schema_js_1.v.optional(schema_js_1.v.id("messages")),
241
- },
242
- handler: async (ctx, args) => {
243
- const statuses = args.statuses ?? validators_js_1.vMessageStatus.members.map((m) => m.value);
244
- const last = args.upToAndIncludingMessageId &&
245
- (await ctx.db.get(args.upToAndIncludingMessageId));
246
- (0, convex_helpers_1.assert)(!last || last.threadId === args.threadId, "upToAndIncludingMessageId must be a message in the thread");
247
- const toolOptions = args.excludeToolMessages ? [false] : [true, false];
248
- const order = args.order ?? "desc";
249
- const streams = toolOptions.flatMap((tool) => statuses.map((status) => (0, stream_1.stream)(ctx.db, schema_js_1.schema)
250
- .query("messages")
251
- .withIndex("threadId_status_tool_order_stepOrder", (q) => {
252
- const qq = q
253
- .eq("threadId", args.threadId)
254
- .eq("status", status)
255
- .eq("tool", tool);
256
- if (last) {
257
- return qq.lte("order", last.order);
258
- }
259
- return qq;
260
- })
261
- .order(order)
262
- .filterWith(async (m) => !last ||
263
- m.order < last.order ||
264
- (m.order === last.order && m.stepOrder <= last.stepOrder))));
265
- const messages = await (0, stream_1.mergedStream)(streams, [
266
- "order",
267
- "stepOrder",
268
- ]).paginate(args.paginationOpts ?? {
269
- numItems: shared_js_1.DEFAULT_RECENT_MESSAGES,
270
- cursor: null,
271
- });
272
- return { ...messages, page: messages.page.map(publicMessage) };
273
- },
274
- returns: (0, validators_js_1.vPaginationResult)(schema_js_1.vMessageDoc),
275
- });
276
- exports.getMessagesByIds = (0, server_js_1.query)({
277
- args: {
278
- messageIds: schema_js_1.v.array(schema_js_1.v.id("messages")),
279
- },
280
- handler: async (ctx, args) => {
281
- return await Promise.all(args.messageIds.map((id) => ctx.db.get(id)));
282
- },
283
- returns: schema_js_1.v.array(schema_js_1.v.union(schema_js_1.v.null(), schema_js_1.vMessageDoc)),
284
- });
285
- /** @deprecated Use listMessagesByThreadId instead. */
286
- exports.getThreadMessages = (0, server_js_1.query)({
287
- args: { deprecated: schema_js_1.v.literal("Use listMessagesByThreadId instead") },
288
- handler: async () => {
289
- throw new Error("Use listMessagesByThreadId instead of getThreadMessages");
290
- },
291
- returns: (0, validators_js_1.vPaginationResult)(schema_js_1.vMessageDoc),
292
- });
293
- exports.searchMessages = (0, server_js_1.action)({
294
- args: {
295
- threadId: schema_js_1.v.optional(schema_js_1.v.id("threads")),
296
- searchAllMessagesForUserId: schema_js_1.v.optional(schema_js_1.v.string()),
297
- beforeMessageId: schema_js_1.v.optional(schema_js_1.v.id("messages")),
298
- ...validators_js_1.vSearchOptions.fields,
299
- },
300
- returns: schema_js_1.v.array(schema_js_1.vMessageDoc),
301
- handler: async (ctx, args) => {
302
- (0, convex_helpers_1.assert)(args.searchAllMessagesForUserId || args.threadId, "Specify userId or threadId");
303
- const limit = args.limit;
304
- let textSearchMessages;
305
- if (args.text) {
306
- textSearchMessages = await ctx.runQuery(api_js_1.api.messages.textSearch, {
307
- searchAllMessagesForUserId: args.searchAllMessagesForUserId,
308
- threadId: args.threadId,
309
- text: args.text,
310
- limit,
311
- beforeMessageId: args.beforeMessageId,
312
- });
313
- }
314
- if (args.vector) {
315
- const dimension = args.vector.length;
316
- if (!tables_js_1.VectorDimensions.includes(dimension)) {
317
- throw new Error(`Unsupported vector dimension: ${dimension}`);
318
- }
319
- const vectors = (await (0, index_js_1.searchVectors)(ctx, args.vector, {
320
- dimension,
321
- model: args.vectorModel ?? "unknown",
322
- table: "messages",
323
- searchAllMessagesForUserId: args.searchAllMessagesForUserId,
324
- threadId: args.threadId,
325
- limit,
326
- })).filter((v) => v._score > (args.vectorScoreThreshold ?? 0));
327
- // Reciprocal rank fusion
328
- const k = 10;
329
- const textEmbeddingIds = textSearchMessages?.map((m) => m.embeddingId);
330
- const vectorScores = vectors
331
- .map((v, i) => ({
332
- id: v._id,
333
- score: 1 / (i + k) +
334
- 1 / ((textEmbeddingIds?.indexOf(v._id) ?? Infinity) + k),
335
- }))
336
- .sort((a, b) => b.score - a.score);
337
- const vectorIds = vectorScores.slice(0, limit).map((v) => v.id);
338
- const messages = await ctx.runQuery(api_js_1.internal.messages._fetchSearchMessages, {
339
- searchAllMessagesForUserId: args.searchAllMessagesForUserId,
340
- threadId: args.threadId,
341
- vectorIds,
342
- textSearchMessages: textSearchMessages?.filter((m) => !vectorIds.includes(m.embeddingId)),
343
- messageRange: args.messageRange ?? shared_js_1.DEFAULT_MESSAGE_RANGE,
344
- beforeMessageId: args.beforeMessageId,
345
- limit,
346
- });
347
- return messages;
348
- }
349
- return textSearchMessages?.flat() ?? [];
350
- },
351
- });
352
- exports._fetchSearchMessages = (0, server_js_1.internalQuery)({
353
- args: {
354
- threadId: schema_js_1.v.optional(schema_js_1.v.id("threads")),
355
- vectorIds: schema_js_1.v.array(tables_js_1.vVectorId),
356
- searchAllMessagesForUserId: schema_js_1.v.optional(schema_js_1.v.string()),
357
- textSearchMessages: schema_js_1.v.optional(schema_js_1.v.array(schema_js_1.vMessageDoc)),
358
- messageRange: schema_js_1.v.object({ before: schema_js_1.v.number(), after: schema_js_1.v.number() }),
359
- beforeMessageId: schema_js_1.v.optional(schema_js_1.v.id("messages")),
360
- limit: schema_js_1.v.number(),
361
- },
362
- returns: schema_js_1.v.array(schema_js_1.vMessageDoc),
363
- handler: async (ctx, args) => {
364
- const beforeMessage = args.beforeMessageId && (await ctx.db.get(args.beforeMessageId));
365
- const { searchAllMessagesForUserId, threadId } = args;
366
- (0, convex_helpers_1.assert)(searchAllMessagesForUserId || threadId, "Specify searchAllMessagesForUserId or threadId to search");
367
- let messages = (await Promise.all(args.vectorIds.map((embeddingId) => ctx.db
368
- .query("messages")
369
- .withIndex("embeddingId", (q) => q.eq("embeddingId", embeddingId))
370
- .filter((q) => searchAllMessagesForUserId
371
- ? q.eq(q.field("userId"), searchAllMessagesForUserId)
372
- : q.eq(q.field("threadId"), threadId))
373
- // Don't include pending. Failed messages hopefully are deleted but may as well be safe.
374
- .filter((q) => q.eq(q.field("status"), "success"))
375
- .first())))
376
- .filter((m) => m !== undefined &&
377
- m !== null &&
378
- !m.tool &&
379
- (!beforeMessage ||
380
- m.order < beforeMessage.order ||
381
- (m.order === beforeMessage.order &&
382
- m.stepOrder < beforeMessage.stepOrder)))
383
- .map(publicMessage);
384
- messages.push(...(args.textSearchMessages ?? []));
385
- // TODO: prioritize more recent messages
386
- messages.sort((a, b) => a.order - b.order);
387
- messages = messages.slice(0, args.limit);
388
- // Fetch the surrounding messages
389
- if (!threadId) {
390
- return messages.sort((a, b) => a.order - b.order);
391
- }
392
- const included = {};
393
- for (const m of messages) {
394
- const searchId = m.threadId ?? m.userId;
395
- if (!included[searchId]) {
396
- included[searchId] = new Set();
397
- }
398
- included[searchId].add(m.order);
399
- }
400
- const ranges = {};
401
- const { before, after } = args.messageRange;
402
- for (const m of messages) {
403
- const searchId = m.threadId ?? m.userId;
404
- const order = m.order;
405
- let earliest = order - before;
406
- let latest = order + after;
407
- for (; earliest <= latest; earliest++) {
408
- if (!included[searchId].has(earliest)) {
409
- break;
410
- }
411
- }
412
- for (; latest >= earliest; latest--) {
413
- if (!included[searchId].has(latest)) {
414
- break;
415
- }
416
- }
417
- for (let i = earliest; i <= latest; i++) {
418
- included[searchId].add(i);
419
- }
420
- if (earliest !== latest) {
421
- const surrounding = await ctx.db
422
- .query("messages")
423
- .withIndex("threadId_status_tool_order_stepOrder", (q) => q
424
- .eq("threadId", m.threadId)
425
- .eq("status", "success")
426
- .eq("tool", false)
427
- .gte("order", earliest)
428
- .lte("order", latest))
429
- .collect();
430
- if (!ranges[searchId]) {
431
- ranges[searchId] = [];
432
- }
433
- ranges[searchId].push(...surrounding);
434
- }
435
- }
436
- for (const r of Object.values(ranges).flat()) {
437
- if (!messages.some((m) => m._id === r._id)) {
438
- messages.push(publicMessage(r));
439
- }
440
- }
441
- return messages.sort((a, b) => a.order - b.order);
442
- },
443
- });
444
- // returns ranges of messages in order of text search relevance,
445
- // excluding duplicates in later ranges.
446
- exports.textSearch = (0, server_js_1.query)({
447
- args: {
448
- threadId: schema_js_1.v.optional(schema_js_1.v.id("threads")),
449
- searchAllMessagesForUserId: schema_js_1.v.optional(schema_js_1.v.string()),
450
- text: schema_js_1.v.string(),
451
- limit: schema_js_1.v.number(),
452
- beforeMessageId: schema_js_1.v.optional(schema_js_1.v.id("messages")),
453
- },
454
- handler: async (ctx, args) => {
455
- (0, convex_helpers_1.assert)(args.searchAllMessagesForUserId || args.threadId, "Specify userId or threadId");
456
- const beforeMessage = args.beforeMessageId && (await ctx.db.get(args.beforeMessageId));
457
- const order = beforeMessage?.order;
458
- const messages = await ctx.db
459
- .query("messages")
460
- .withSearchIndex("text_search", (q) => args.searchAllMessagesForUserId
461
- ? q
462
- .search("text", args.text)
463
- .eq("userId", args.searchAllMessagesForUserId)
464
- : q.search("text", args.text).eq("threadId", args.threadId))
465
- // Just in case tool messages slip through
466
- .filter((q) => {
467
- const qq = q.eq(q.field("tool"), false);
468
- if (order) {
469
- return q.and(qq, q.lte(q.field("order"), order));
470
- }
471
- return qq;
472
- })
473
- .take(args.limit);
474
- return messages
475
- .filter((m) => !beforeMessage ||
476
- m.order < beforeMessage.order ||
477
- (m.order === beforeMessage.order &&
478
- m.stepOrder < beforeMessage.stepOrder))
479
- .map(publicMessage);
480
- },
481
- returns: schema_js_1.v.array(schema_js_1.vMessageDoc),
482
- });
483
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/component/messages.ts"],"names":[],"mappings":"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"}