@convex-dev/agent 0.1.10-alpha.0 → 0.1.10
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 +1 -1
- package/dist/commonjs/client/createTool.js +8 -5
- package/dist/commonjs/client/createTool.js.map +1 -1
- package/dist/commonjs/client/files.js +8 -3
- package/dist/commonjs/client/files.js.map +1 -1
- package/dist/commonjs/client/index.d.ts +3 -4
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +80 -59
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/client/streaming.d.ts.map +1 -1
- package/dist/commonjs/client/streaming.js +14 -15
- package/dist/commonjs/client/streaming.js.map +1 -1
- package/dist/commonjs/client/types.js +2 -1
- package/dist/commonjs/component/_generated/api.d.ts +2 -13
- package/dist/commonjs/component/_generated/api.js +7 -4
- package/dist/commonjs/component/_generated/api.js.map +1 -1
- package/dist/commonjs/component/_generated/server.js +11 -8
- package/dist/commonjs/component/_generated/server.js.map +1 -1
- package/dist/commonjs/component/apiKeys.js +16 -13
- package/dist/commonjs/component/apiKeys.js.map +1 -1
- package/dist/commonjs/component/convex.config.js +4 -2
- package/dist/commonjs/component/convex.config.js.map +1 -1
- package/dist/commonjs/component/files.d.ts +1 -1
- package/dist/commonjs/component/files.d.ts.map +1 -1
- package/dist/commonjs/component/files.js +47 -40
- package/dist/commonjs/component/files.js.map +1 -1
- package/dist/commonjs/component/messages.d.ts +1 -1
- package/dist/commonjs/component/messages.d.ts.map +1 -1
- package/dist/commonjs/component/messages.js +112 -107
- package/dist/commonjs/component/messages.js.map +1 -1
- package/dist/commonjs/component/schema.d.ts +26 -26
- package/dist/commonjs/component/schema.d.ts.map +1 -1
- package/dist/commonjs/component/schema.js +101 -98
- package/dist/commonjs/component/schema.js.map +1 -1
- package/dist/commonjs/component/streams.d.ts +0 -7
- package/dist/commonjs/component/streams.d.ts.map +1 -1
- package/dist/commonjs/component/streams.js +100 -116
- package/dist/commonjs/component/streams.js.map +1 -1
- package/dist/commonjs/component/threads.js +54 -51
- package/dist/commonjs/component/threads.js.map +1 -1
- package/dist/commonjs/component/users.js +49 -46
- package/dist/commonjs/component/users.js.map +1 -1
- package/dist/commonjs/component/vector/index.js +53 -48
- package/dist/commonjs/component/vector/index.js.map +1 -1
- package/dist/commonjs/component/vector/tables.d.ts +3 -5
- package/dist/commonjs/component/vector/tables.d.ts.map +1 -1
- package/dist/commonjs/component/vector/tables.js +32 -26
- package/dist/commonjs/component/vector/tables.js.map +1 -1
- package/dist/commonjs/mapping.d.ts +3 -3
- package/dist/commonjs/mapping.d.ts.map +1 -1
- package/dist/commonjs/mapping.js +39 -24
- package/dist/commonjs/mapping.js.map +1 -1
- package/dist/commonjs/react/deltas.d.ts.map +1 -1
- package/dist/commonjs/react/deltas.js +13 -7
- package/dist/commonjs/react/deltas.js.map +1 -1
- package/dist/commonjs/react/index.d.ts +2 -4
- package/dist/commonjs/react/index.d.ts.map +1 -1
- package/dist/commonjs/react/index.js +37 -42
- package/dist/commonjs/react/index.js.map +1 -1
- package/dist/commonjs/react/optimisticallySendMessage.js +7 -4
- package/dist/commonjs/react/optimisticallySendMessage.js.map +1 -1
- package/dist/commonjs/react/toUIMessages.js +8 -5
- package/dist/commonjs/react/toUIMessages.js.map +1 -1
- package/dist/commonjs/react/types.js +2 -1
- package/dist/commonjs/react/useSmoothText.js +8 -5
- package/dist/commonjs/react/useSmoothText.js.map +1 -1
- package/dist/commonjs/shared.js +9 -4
- package/dist/commonjs/shared.js.map +1 -1
- package/dist/commonjs/validators.d.ts +3 -8
- package/dist/commonjs/validators.d.ts.map +1 -1
- package/dist/commonjs/validators.js +249 -247
- package/dist/commonjs/validators.js.map +1 -1
- package/dist/commonjs/vitest.config.js +4 -2
- package/dist/commonjs/vitest.config.js.map +1 -1
- package/dist/commonjs.tsbuildinfo +1 -1
- package/dist/esm/client/index.d.ts +3 -4
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +2 -4
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/streaming.d.ts.map +1 -1
- package/dist/esm/client/streaming.js +1 -7
- package/dist/esm/client/streaming.js.map +1 -1
- package/dist/esm/component/_generated/api.d.ts +2 -13
- package/dist/esm/component/files.d.ts +1 -1
- package/dist/esm/component/files.d.ts.map +1 -1
- package/dist/esm/component/files.js +6 -4
- package/dist/esm/component/files.js.map +1 -1
- package/dist/esm/component/schema.d.ts +26 -26
- package/dist/esm/component/schema.d.ts.map +1 -1
- package/dist/esm/component/schema.js +2 -2
- package/dist/esm/component/schema.js.map +1 -1
- package/dist/esm/component/streams.d.ts +0 -7
- package/dist/esm/component/streams.d.ts.map +1 -1
- package/dist/esm/component/streams.js +26 -46
- package/dist/esm/component/streams.js.map +1 -1
- package/dist/esm/component/vector/tables.d.ts +3 -5
- package/dist/esm/component/vector/tables.d.ts.map +1 -1
- package/dist/esm/mapping.d.ts +3 -3
- package/dist/esm/mapping.d.ts.map +1 -1
- package/dist/esm/mapping.js +5 -3
- package/dist/esm/mapping.js.map +1 -1
- package/dist/esm/react/deltas.d.ts.map +1 -1
- package/dist/esm/react/deltas.js +2 -2
- package/dist/esm/react/deltas.js.map +1 -1
- package/dist/esm/react/index.d.ts +2 -4
- package/dist/esm/react/index.d.ts.map +1 -1
- package/dist/esm/react/index.js +9 -22
- package/dist/esm/react/index.js.map +1 -1
- package/dist/esm/react/optimisticallySendMessage.js +1 -1
- package/dist/esm/react/optimisticallySendMessage.js.map +1 -1
- package/dist/esm/validators.d.ts +3 -8
- package/dist/esm/validators.d.ts.map +1 -1
- package/dist/esm/validators.js +0 -2
- package/dist/esm/validators.js.map +1 -1
- package/dist/esm.tsbuildinfo +1 -1
- package/package.json +9 -4
- package/react/package.json +5 -0
- package/src/client/index.ts +15 -12
- package/src/client/streaming.ts +1 -7
- package/src/component/_generated/api.d.ts +2 -13
- package/src/component/files.ts +6 -4
- package/src/component/schema.ts +2 -2
- package/src/component/streams.ts +41 -80
- package/src/component/vector/tables.ts +1 -1
- package/src/mapping.ts +8 -4
- package/src/react/deltas.ts +2 -4
- package/src/react/index.ts +11 -23
- package/src/react/optimisticallySendMessage.ts +1 -1
- package/src/validators.ts +0 -6
- package/validators/package.json +5 -0
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteFiles = exports.getFilesToDelete = exports.copyFile = exports.useExistingFile = exports.get = exports.addFile = void 0;
|
|
4
|
+
exports.addFileHandler = addFileHandler;
|
|
5
|
+
exports.copyFileHandler = copyFileHandler;
|
|
6
|
+
const pagination_1 = require("convex-helpers/server/pagination");
|
|
7
|
+
const server_js_1 = require("./_generated/server.js");
|
|
8
|
+
const schema_js_1 = require("./schema.js");
|
|
9
|
+
const server_1 = require("convex/server");
|
|
10
|
+
const addFileArgs = schema_js_1.v.object({
|
|
11
|
+
storageId: schema_js_1.v.string(),
|
|
12
|
+
hash: schema_js_1.v.string(),
|
|
13
|
+
filename: schema_js_1.v.optional(schema_js_1.v.string()),
|
|
14
|
+
mimeType: schema_js_1.v.string(),
|
|
10
15
|
});
|
|
11
|
-
|
|
16
|
+
exports.addFile = (0, server_js_1.mutation)({
|
|
12
17
|
args: addFileArgs,
|
|
13
18
|
handler: addFileHandler,
|
|
14
19
|
returns: {
|
|
15
|
-
fileId: v.id("files"),
|
|
16
|
-
storageId: v.string(),
|
|
20
|
+
fileId: schema_js_1.v.id("files"),
|
|
21
|
+
storageId: schema_js_1.v.string(),
|
|
17
22
|
},
|
|
18
23
|
});
|
|
19
|
-
|
|
24
|
+
async function addFileHandler(ctx, args) {
|
|
20
25
|
const existingFile = await ctx.db
|
|
21
26
|
.query("files")
|
|
22
27
|
.withIndex("hash", (q) => q.eq("hash", args.hash))
|
|
@@ -44,11 +49,11 @@ export async function addFileHandler(ctx, args) {
|
|
|
44
49
|
storageId: args.storageId,
|
|
45
50
|
};
|
|
46
51
|
}
|
|
47
|
-
|
|
52
|
+
exports.get = (0, server_js_1.query)({
|
|
48
53
|
args: {
|
|
49
|
-
fileId: v.id("files"),
|
|
54
|
+
fileId: schema_js_1.v.id("files"),
|
|
50
55
|
},
|
|
51
|
-
returns: v.union(v.null(), v.doc("files")),
|
|
56
|
+
returns: schema_js_1.v.union(schema_js_1.v.null(), schema_js_1.v.doc("files")),
|
|
52
57
|
handler: async (ctx, args) => {
|
|
53
58
|
return ctx.db.get(args.fileId);
|
|
54
59
|
},
|
|
@@ -59,10 +64,10 @@ export const get = query({
|
|
|
59
64
|
* Note: this will not increment the refcount. only saving messages does that.
|
|
60
65
|
* It will only match if the filename is the same (or both are undefined).
|
|
61
66
|
*/
|
|
62
|
-
|
|
67
|
+
exports.useExistingFile = (0, server_js_1.mutation)({
|
|
63
68
|
args: {
|
|
64
|
-
hash: v.string(),
|
|
65
|
-
filename: v.optional(v.string()),
|
|
69
|
+
hash: schema_js_1.v.string(),
|
|
70
|
+
filename: schema_js_1.v.optional(schema_js_1.v.string()),
|
|
66
71
|
},
|
|
67
72
|
handler: async (ctx, args) => {
|
|
68
73
|
const file = await ctx.db
|
|
@@ -78,19 +83,19 @@ export const useExistingFile = mutation({
|
|
|
78
83
|
});
|
|
79
84
|
return { fileId: file._id, storageId: file.storageId };
|
|
80
85
|
},
|
|
81
|
-
returns: v.union(v.null(), v.object({
|
|
82
|
-
fileId: v.id("files"),
|
|
83
|
-
storageId: v.string(),
|
|
86
|
+
returns: schema_js_1.v.union(schema_js_1.v.null(), schema_js_1.v.object({
|
|
87
|
+
fileId: schema_js_1.v.id("files"),
|
|
88
|
+
storageId: schema_js_1.v.string(),
|
|
84
89
|
})),
|
|
85
90
|
});
|
|
86
|
-
|
|
91
|
+
exports.copyFile = (0, server_js_1.mutation)({
|
|
87
92
|
args: {
|
|
88
|
-
fileId: v.id("files"),
|
|
93
|
+
fileId: schema_js_1.v.id("files"),
|
|
89
94
|
},
|
|
90
95
|
handler: copyFileHandler,
|
|
91
|
-
returns: v.null(),
|
|
96
|
+
returns: schema_js_1.v.null(),
|
|
92
97
|
});
|
|
93
|
-
|
|
98
|
+
async function copyFileHandler(ctx, args) {
|
|
94
99
|
const file = await ctx.db.get(args.fileId);
|
|
95
100
|
if (!file) {
|
|
96
101
|
throw new Error("File not found");
|
|
@@ -107,44 +112,46 @@ export async function copyFileHandler(ctx, args) {
|
|
|
107
112
|
* You can inspect the `lastTouchedAt` field to see how recently it was used.
|
|
108
113
|
* I'd recommend not deleting anything touched in the last 24 hours.
|
|
109
114
|
*/
|
|
110
|
-
|
|
115
|
+
exports.getFilesToDelete = (0, server_js_1.query)({
|
|
111
116
|
args: {
|
|
112
|
-
paginationOpts: paginationOptsValidator,
|
|
117
|
+
paginationOpts: server_1.paginationOptsValidator,
|
|
113
118
|
},
|
|
114
119
|
handler: async (ctx, args) => {
|
|
115
|
-
const files = await paginator(ctx.db, schema)
|
|
120
|
+
const files = await (0, pagination_1.paginator)(ctx.db, schema_js_1.schema)
|
|
116
121
|
.query("files")
|
|
117
122
|
.withIndex("refcount", (q) => q.eq("refcount", 0))
|
|
118
123
|
.paginate(args.paginationOpts);
|
|
119
124
|
return files;
|
|
120
125
|
},
|
|
121
|
-
returns: v.object({
|
|
122
|
-
page: v.array(v.doc("files")),
|
|
123
|
-
continueCursor: v.string(),
|
|
124
|
-
isDone: v.boolean(),
|
|
126
|
+
returns: schema_js_1.v.object({
|
|
127
|
+
page: schema_js_1.v.array(schema_js_1.v.doc("files")),
|
|
128
|
+
continueCursor: schema_js_1.v.string(),
|
|
129
|
+
isDone: schema_js_1.v.boolean(),
|
|
125
130
|
}),
|
|
126
131
|
});
|
|
127
|
-
|
|
132
|
+
exports.deleteFiles = (0, server_js_1.mutation)({
|
|
128
133
|
args: {
|
|
129
|
-
fileIds: v.array(v.id("files")),
|
|
130
|
-
force: v.optional(v.boolean()),
|
|
134
|
+
fileIds: schema_js_1.v.array(schema_js_1.v.id("files")),
|
|
135
|
+
force: schema_js_1.v.optional(schema_js_1.v.boolean()),
|
|
131
136
|
},
|
|
137
|
+
returns: schema_js_1.v.array(schema_js_1.v.id("files")),
|
|
132
138
|
handler: async (ctx, args) => {
|
|
133
|
-
await Promise.all(args.fileIds.map(async (fileId) => {
|
|
139
|
+
const deletedFileIds = await Promise.all(args.fileIds.map(async (fileId) => {
|
|
134
140
|
const file = await ctx.db.get(fileId);
|
|
135
141
|
if (!file) {
|
|
136
142
|
console.error(`File ${fileId} not found when deleting, skipping...`);
|
|
137
|
-
return;
|
|
143
|
+
return null;
|
|
138
144
|
}
|
|
139
145
|
if (file.refcount && file.refcount > 0) {
|
|
140
146
|
if (!args.force) {
|
|
141
147
|
console.error(`File ${fileId} has refcount ${file.refcount} > 0, skipping...`);
|
|
142
|
-
return;
|
|
148
|
+
return null;
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
await ctx.db.delete(fileId);
|
|
152
|
+
return fileId;
|
|
146
153
|
}));
|
|
154
|
+
return deletedFileIds.filter((fileId) => fileId !== null);
|
|
147
155
|
},
|
|
148
|
-
returns: v.null(),
|
|
149
156
|
});
|
|
150
157
|
//# sourceMappingURL=files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/component/files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/component/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -441,7 +441,7 @@ export declare function getMaxMessage(ctx: QueryCtx, threadId: Id<"threads">, or
|
|
|
441
441
|
threadId: import("convex/values").GenericId<"threads">;
|
|
442
442
|
stepOrder: number;
|
|
443
443
|
tool: boolean;
|
|
444
|
-
}
|
|
444
|
+
}>;
|
|
445
445
|
export declare const rollbackMessage: import("convex/server").RegisteredMutation<"public", {
|
|
446
446
|
error?: string | undefined;
|
|
447
447
|
messageId: import("convex/values").GenericId<"messages">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/component/messages.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAIL,KAAK,WAAW,EAEhB,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAgBhC,gEAAgE;AAChE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;GAAuB,CAAC;AAExD,0CAA0C;AAC1C,eAAO,MAAM,SAAS;;;;;;;;;UAAa,CAAC;AAEpC,qDAAqD;AACrD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;GAAgB,CAAC;AAM1C,wBAAsB,aAAa,CACjC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,iBAa5B;AAED,eAAO,MAAM,eAAe,sCAE3B,CAAC;AAYF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAMtB,CAAC;AAyGH,wBAAsB,aAAa,CACjC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EACvB,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/component/messages.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAIL,KAAK,WAAW,EAEhB,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAgBhC,gEAAgE;AAChE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;GAAuB,CAAC;AAExD,0CAA0C;AAC1C,eAAO,MAAM,SAAS;;;;;;;;;UAAa,CAAC;AAEpC,qDAAqD;AACrD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;GAAgB,CAAC;AAM1C,wBAAsB,aAAa,CACjC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,iBAa5B;AAED,eAAO,MAAM,eAAe,sCAE3B,CAAC;AAYF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAMtB,CAAC;AAyGH,wBAAsB,aAAa,CACjC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EACvB,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGf;AA8BD,eAAO,MAAM,eAAe;;;iBA0B1B,CAAC;AAEH,eAAO,MAAM,aAAa;eAuCI,EAAE,CAAC,UAAU,CAAC;iBAjC1C,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BxB,CAAC;AA6BH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DjC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAQ3B,CAAC;AAEH,sDAAsD;AACtD,eAAO,MAAM,iBAAiB;;kBAM5B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqEzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4G/B,CAAC;AAIH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6CrB,CAAC"}
|
|
@@ -1,24 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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");
|
|
12
17
|
/** @deprecated Use *.threads.listMessagesByThreadId instead. */
|
|
13
|
-
|
|
18
|
+
exports.listThreadsByUserId = threads_js_1.listThreadsByUserId;
|
|
14
19
|
/** @deprecated Use *.threads.getThread */
|
|
15
|
-
|
|
20
|
+
exports.getThread = threads_js_1.getThread;
|
|
16
21
|
/** @deprecated Use *.threads.updateThread instead */
|
|
17
|
-
|
|
22
|
+
exports.updateThread = threads_js_1.updateThread;
|
|
18
23
|
function publicMessage(message) {
|
|
19
|
-
return omit(message, ["parentMessageId", "stepId", "files"]);
|
|
24
|
+
return (0, convex_helpers_1.omit)(message, ["parentMessageId", "stepId", "files"]);
|
|
20
25
|
}
|
|
21
|
-
|
|
26
|
+
async function deleteMessage(ctx, messageDoc) {
|
|
22
27
|
await ctx.db.delete(messageDoc._id);
|
|
23
28
|
if (messageDoc.embeddingId) {
|
|
24
29
|
await ctx.db.delete(messageDoc.embeddingId);
|
|
@@ -32,22 +37,22 @@ export async function deleteMessage(ctx, messageDoc) {
|
|
|
32
37
|
}
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
|
-
|
|
40
|
+
exports.messageStatuses = schema_js_1.vMessageDoc.fields.status.members.map((m) => m.value);
|
|
36
41
|
const addMessagesArgs = {
|
|
37
|
-
userId: v.optional(v.string()),
|
|
38
|
-
threadId: v.id("threads"),
|
|
39
|
-
promptMessageId: v.optional(v.id("messages")),
|
|
40
|
-
agentName: v.optional(v.string()),
|
|
41
|
-
messages: v.array(vMessageWithMetadataInternal),
|
|
42
|
-
embeddings: v.optional(vMessageEmbeddings),
|
|
43
|
-
pending: v.optional(v.boolean()),
|
|
44
|
-
failPendingSteps: v.optional(v.boolean()),
|
|
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()),
|
|
45
50
|
};
|
|
46
|
-
|
|
51
|
+
exports.addMessages = (0, server_js_1.mutation)({
|
|
47
52
|
args: addMessagesArgs,
|
|
48
53
|
handler: addMessagesHandler,
|
|
49
|
-
returns: v.object({
|
|
50
|
-
messages: v.array(vMessageDoc),
|
|
54
|
+
returns: schema_js_1.v.object({
|
|
55
|
+
messages: schema_js_1.v.array(schema_js_1.vMessageDoc),
|
|
51
56
|
}),
|
|
52
57
|
});
|
|
53
58
|
async function addMessagesHandler(ctx, args) {
|
|
@@ -55,13 +60,13 @@ async function addMessagesHandler(ctx, args) {
|
|
|
55
60
|
const threadId = args.threadId;
|
|
56
61
|
if (!userId && args.threadId) {
|
|
57
62
|
const thread = await ctx.db.get(args.threadId);
|
|
58
|
-
assert(thread, `Thread ${args.threadId} not found`);
|
|
63
|
+
(0, convex_helpers_1.assert)(thread, `Thread ${args.threadId} not found`);
|
|
59
64
|
userId = thread.userId;
|
|
60
65
|
}
|
|
61
66
|
const { embeddings, failPendingSteps, pending, messages, promptMessageId, ...rest } = args;
|
|
62
67
|
const parentMessage = promptMessageId && (await ctx.db.get(promptMessageId));
|
|
63
68
|
if (failPendingSteps) {
|
|
64
|
-
assert(args.threadId, "threadId is required to fail pending steps");
|
|
69
|
+
(0, convex_helpers_1.assert)(args.threadId, "threadId is required to fail pending steps");
|
|
65
70
|
const pendingMessages = await ctx.db
|
|
66
71
|
.query("messages")
|
|
67
72
|
.withIndex("threadId_status_tool_order_stepOrder", (q) => q.eq("threadId", threadId).eq("status", "pending"))
|
|
@@ -73,7 +78,7 @@ async function addMessagesHandler(ctx, args) {
|
|
|
73
78
|
let order, stepOrder;
|
|
74
79
|
let fail = false;
|
|
75
80
|
if (promptMessageId) {
|
|
76
|
-
assert(parentMessage, `Parent message ${promptMessageId} not found`);
|
|
81
|
+
(0, convex_helpers_1.assert)(parentMessage, `Parent message ${promptMessageId} not found`);
|
|
77
82
|
if (parentMessage.status === "failed") {
|
|
78
83
|
fail = true;
|
|
79
84
|
}
|
|
@@ -89,13 +94,13 @@ async function addMessagesHandler(ctx, args) {
|
|
|
89
94
|
}
|
|
90
95
|
const toReturn = [];
|
|
91
96
|
if (embeddings) {
|
|
92
|
-
assert(embeddings.vectors.length === messages.length, "embeddings.vectors.length must match messages.length");
|
|
97
|
+
(0, convex_helpers_1.assert)(embeddings.vectors.length === messages.length, "embeddings.vectors.length must match messages.length");
|
|
93
98
|
}
|
|
94
99
|
for (let i = 0; i < messages.length; i++) {
|
|
95
100
|
const message = messages[i];
|
|
96
101
|
let embeddingId;
|
|
97
102
|
if (embeddings && embeddings.vectors[i]) {
|
|
98
|
-
embeddingId = await insertVector(ctx, embeddings.dimension, {
|
|
103
|
+
embeddingId = await (0, index_js_1.insertVector)(ctx, embeddings.dimension, {
|
|
99
104
|
vector: embeddings.vectors[i],
|
|
100
105
|
model: embeddings.model,
|
|
101
106
|
table: "messages",
|
|
@@ -111,8 +116,8 @@ async function addMessagesHandler(ctx, args) {
|
|
|
111
116
|
parentMessageId: promptMessageId,
|
|
112
117
|
userId,
|
|
113
118
|
order,
|
|
114
|
-
tool: isTool(message.message),
|
|
115
|
-
text: extractText(message.message),
|
|
119
|
+
tool: (0, shared_js_1.isTool)(message.message),
|
|
120
|
+
text: (0, shared_js_1.extractText)(message.message),
|
|
116
121
|
status: fail ? "failed" : pending ? "pending" : "success",
|
|
117
122
|
error: fail ? "Parent message failed" : undefined,
|
|
118
123
|
stepOrder,
|
|
@@ -136,11 +141,11 @@ async function addMessagesHandler(ctx, args) {
|
|
|
136
141
|
return { messages: toReturn.map(publicMessage) };
|
|
137
142
|
}
|
|
138
143
|
// exported for tests
|
|
139
|
-
|
|
144
|
+
async function getMaxMessage(ctx, threadId, order) {
|
|
140
145
|
return orderedMessagesStream(ctx, threadId, "desc", order).first();
|
|
141
146
|
}
|
|
142
147
|
function orderedMessagesStream(ctx, threadId, sortOrder, order) {
|
|
143
|
-
return mergedStream([true, false].flatMap((tool) => messageStatuses.map((status) => stream(ctx.db, schema)
|
|
148
|
+
return (0, stream_1.mergedStream)([true, false].flatMap((tool) => exports.messageStatuses.map((status) => (0, stream_1.stream)(ctx.db, schema_js_1.schema)
|
|
144
149
|
.query("messages")
|
|
145
150
|
.withIndex("threadId_status_tool_order_stepOrder", (q) => {
|
|
146
151
|
const qq = q
|
|
@@ -154,15 +159,15 @@ function orderedMessagesStream(ctx, threadId, sortOrder, order) {
|
|
|
154
159
|
})
|
|
155
160
|
.order(sortOrder))), ["order", "stepOrder"]);
|
|
156
161
|
}
|
|
157
|
-
|
|
162
|
+
exports.rollbackMessage = (0, server_js_1.mutation)({
|
|
158
163
|
args: {
|
|
159
|
-
messageId: v.id("messages"),
|
|
160
|
-
error: v.optional(v.string()),
|
|
164
|
+
messageId: schema_js_1.v.id("messages"),
|
|
165
|
+
error: schema_js_1.v.optional(schema_js_1.v.string()),
|
|
161
166
|
},
|
|
162
|
-
returns: v.null(),
|
|
167
|
+
returns: schema_js_1.v.null(),
|
|
163
168
|
handler: async (ctx, { messageId, error }) => {
|
|
164
169
|
const message = await ctx.db.get(messageId);
|
|
165
|
-
assert(message, `Message ${messageId} not found`);
|
|
170
|
+
(0, convex_helpers_1.assert)(message, `Message ${messageId} not found`);
|
|
166
171
|
const messages = await orderedMessagesStream(ctx, message.threadId, "asc", message.order).collect();
|
|
167
172
|
for (const m of messages) {
|
|
168
173
|
if (m.status === "pending") {
|
|
@@ -175,33 +180,33 @@ export const rollbackMessage = mutation({
|
|
|
175
180
|
});
|
|
176
181
|
},
|
|
177
182
|
});
|
|
178
|
-
|
|
183
|
+
exports.commitMessage = (0, server_js_1.mutation)({
|
|
179
184
|
args: {
|
|
180
|
-
messageId: v.id("messages"),
|
|
185
|
+
messageId: schema_js_1.v.id("messages"),
|
|
181
186
|
},
|
|
182
|
-
returns: v.null(),
|
|
187
|
+
returns: schema_js_1.v.null(),
|
|
183
188
|
handler: commitMessageHandler,
|
|
184
189
|
});
|
|
185
|
-
|
|
190
|
+
exports.updateMessage = (0, server_js_1.mutation)({
|
|
186
191
|
args: {
|
|
187
|
-
messageId: v.id("messages"),
|
|
188
|
-
patch: v.object({
|
|
189
|
-
message: v.optional(vMessageDoc.fields.message),
|
|
190
|
-
status: v.optional(vMessageStatus),
|
|
191
|
-
error: v.optional(v.string()),
|
|
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()),
|
|
192
197
|
}),
|
|
193
198
|
},
|
|
194
|
-
returns: vMessageDoc,
|
|
199
|
+
returns: schema_js_1.vMessageDoc,
|
|
195
200
|
handler: async (ctx, args) => {
|
|
196
201
|
const message = await ctx.db.get(args.messageId);
|
|
197
|
-
assert(message, `Message ${args.messageId} not found`);
|
|
202
|
+
(0, convex_helpers_1.assert)(message, `Message ${args.messageId} not found`);
|
|
198
203
|
const patch = {
|
|
199
204
|
...args.patch,
|
|
200
205
|
};
|
|
201
206
|
if (args.patch.message !== undefined) {
|
|
202
207
|
patch.message = args.patch.message;
|
|
203
|
-
patch.tool = isTool(args.patch.message);
|
|
204
|
-
patch.text = extractText(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);
|
|
205
210
|
}
|
|
206
211
|
await ctx.db.patch(args.messageId, patch);
|
|
207
212
|
return publicMessage((await ctx.db.get(args.messageId)));
|
|
@@ -209,9 +214,9 @@ export const updateMessage = mutation({
|
|
|
209
214
|
});
|
|
210
215
|
async function commitMessageHandler(ctx, { messageId }) {
|
|
211
216
|
const message = await ctx.db.get(messageId);
|
|
212
|
-
assert(message, `Message ${messageId} not found`);
|
|
217
|
+
(0, convex_helpers_1.assert)(message, `Message ${messageId} not found`);
|
|
213
218
|
const order = message.order;
|
|
214
|
-
const messages = await mergedStream([true, false].map((tool) => stream(ctx.db, schema)
|
|
219
|
+
const messages = await (0, stream_1.mergedStream)([true, false].map((tool) => (0, stream_1.stream)(ctx.db, schema_js_1.schema)
|
|
215
220
|
.query("messages")
|
|
216
221
|
.withIndex("threadId_status_tool_order_stepOrder", (q) => q
|
|
217
222
|
.eq("threadId", message.threadId)
|
|
@@ -222,26 +227,26 @@ async function commitMessageHandler(ctx, { messageId }) {
|
|
|
222
227
|
await ctx.db.patch(message._id, { status: "success" });
|
|
223
228
|
}
|
|
224
229
|
}
|
|
225
|
-
|
|
230
|
+
exports.listMessagesByThreadId = (0, server_js_1.query)({
|
|
226
231
|
args: {
|
|
227
|
-
threadId: v.id("threads"),
|
|
228
|
-
excludeToolMessages: v.optional(v.boolean()),
|
|
232
|
+
threadId: schema_js_1.v.id("threads"),
|
|
233
|
+
excludeToolMessages: schema_js_1.v.optional(schema_js_1.v.boolean()),
|
|
229
234
|
/** @deprecated Use excludeToolMessages instead. */
|
|
230
|
-
isTool: v.optional(v.literal("use excludeToolMessages instead of this")),
|
|
235
|
+
isTool: schema_js_1.v.optional(schema_js_1.v.literal("use excludeToolMessages instead of this")),
|
|
231
236
|
/** What order to sort the messages in. To get the latest, use "desc". */
|
|
232
|
-
order: v.union(v.literal("asc"), v.literal("desc")),
|
|
233
|
-
paginationOpts: v.optional(paginationOptsValidator),
|
|
234
|
-
statuses: v.optional(v.array(vMessageStatus)),
|
|
235
|
-
upToAndIncludingMessageId: v.optional(v.id("messages")),
|
|
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")),
|
|
236
241
|
},
|
|
237
242
|
handler: async (ctx, args) => {
|
|
238
|
-
const statuses = args.statuses ?? vMessageStatus.members.map((m) => m.value);
|
|
243
|
+
const statuses = args.statuses ?? validators_js_1.vMessageStatus.members.map((m) => m.value);
|
|
239
244
|
const last = args.upToAndIncludingMessageId &&
|
|
240
245
|
(await ctx.db.get(args.upToAndIncludingMessageId));
|
|
241
|
-
assert(!last || last.threadId === args.threadId, "upToAndIncludingMessageId must be a message in the thread");
|
|
246
|
+
(0, convex_helpers_1.assert)(!last || last.threadId === args.threadId, "upToAndIncludingMessageId must be a message in the thread");
|
|
242
247
|
const toolOptions = args.excludeToolMessages ? [false] : [true, false];
|
|
243
248
|
const order = args.order ?? "desc";
|
|
244
|
-
const streams = toolOptions.flatMap((tool) => statuses.map((status) => stream(ctx.db, schema)
|
|
249
|
+
const streams = toolOptions.flatMap((tool) => statuses.map((status) => (0, stream_1.stream)(ctx.db, schema_js_1.schema)
|
|
245
250
|
.query("messages")
|
|
246
251
|
.withIndex("threadId_status_tool_order_stepOrder", (q) => {
|
|
247
252
|
const qq = q
|
|
@@ -257,48 +262,48 @@ export const listMessagesByThreadId = query({
|
|
|
257
262
|
.filterWith(async (m) => !last ||
|
|
258
263
|
m.order < last.order ||
|
|
259
264
|
(m.order === last.order && m.stepOrder <= last.stepOrder))));
|
|
260
|
-
const messages = await mergedStream(streams, [
|
|
265
|
+
const messages = await (0, stream_1.mergedStream)(streams, [
|
|
261
266
|
"order",
|
|
262
267
|
"stepOrder",
|
|
263
268
|
]).paginate(args.paginationOpts ?? {
|
|
264
|
-
numItems: DEFAULT_RECENT_MESSAGES,
|
|
269
|
+
numItems: shared_js_1.DEFAULT_RECENT_MESSAGES,
|
|
265
270
|
cursor: null,
|
|
266
271
|
});
|
|
267
272
|
return { ...messages, page: messages.page.map(publicMessage) };
|
|
268
273
|
},
|
|
269
|
-
returns: vPaginationResult(vMessageDoc),
|
|
274
|
+
returns: (0, validators_js_1.vPaginationResult)(schema_js_1.vMessageDoc),
|
|
270
275
|
});
|
|
271
|
-
|
|
276
|
+
exports.getMessagesByIds = (0, server_js_1.query)({
|
|
272
277
|
args: {
|
|
273
|
-
messageIds: v.array(v.id("messages")),
|
|
278
|
+
messageIds: schema_js_1.v.array(schema_js_1.v.id("messages")),
|
|
274
279
|
},
|
|
275
280
|
handler: async (ctx, args) => {
|
|
276
281
|
return await Promise.all(args.messageIds.map((id) => ctx.db.get(id)));
|
|
277
282
|
},
|
|
278
|
-
returns: v.array(v.union(v.null(), vMessageDoc)),
|
|
283
|
+
returns: schema_js_1.v.array(schema_js_1.v.union(schema_js_1.v.null(), schema_js_1.vMessageDoc)),
|
|
279
284
|
});
|
|
280
285
|
/** @deprecated Use listMessagesByThreadId instead. */
|
|
281
|
-
|
|
282
|
-
args: { deprecated: v.literal("Use listMessagesByThreadId instead") },
|
|
286
|
+
exports.getThreadMessages = (0, server_js_1.query)({
|
|
287
|
+
args: { deprecated: schema_js_1.v.literal("Use listMessagesByThreadId instead") },
|
|
283
288
|
handler: async () => {
|
|
284
289
|
throw new Error("Use listMessagesByThreadId instead of getThreadMessages");
|
|
285
290
|
},
|
|
286
|
-
returns: vPaginationResult(vMessageDoc),
|
|
291
|
+
returns: (0, validators_js_1.vPaginationResult)(schema_js_1.vMessageDoc),
|
|
287
292
|
});
|
|
288
|
-
|
|
293
|
+
exports.searchMessages = (0, server_js_1.action)({
|
|
289
294
|
args: {
|
|
290
|
-
threadId: v.optional(v.id("threads")),
|
|
291
|
-
searchAllMessagesForUserId: v.optional(v.string()),
|
|
292
|
-
beforeMessageId: v.optional(v.id("messages")),
|
|
293
|
-
...vSearchOptions.fields,
|
|
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,
|
|
294
299
|
},
|
|
295
|
-
returns: v.array(vMessageDoc),
|
|
300
|
+
returns: schema_js_1.v.array(schema_js_1.vMessageDoc),
|
|
296
301
|
handler: async (ctx, args) => {
|
|
297
|
-
assert(args.searchAllMessagesForUserId || args.threadId, "Specify userId or threadId");
|
|
302
|
+
(0, convex_helpers_1.assert)(args.searchAllMessagesForUserId || args.threadId, "Specify userId or threadId");
|
|
298
303
|
const limit = args.limit;
|
|
299
304
|
let textSearchMessages;
|
|
300
305
|
if (args.text) {
|
|
301
|
-
textSearchMessages = await ctx.runQuery(api.messages.textSearch, {
|
|
306
|
+
textSearchMessages = await ctx.runQuery(api_js_1.api.messages.textSearch, {
|
|
302
307
|
searchAllMessagesForUserId: args.searchAllMessagesForUserId,
|
|
303
308
|
threadId: args.threadId,
|
|
304
309
|
text: args.text,
|
|
@@ -308,10 +313,10 @@ export const searchMessages = action({
|
|
|
308
313
|
}
|
|
309
314
|
if (args.vector) {
|
|
310
315
|
const dimension = args.vector.length;
|
|
311
|
-
if (!VectorDimensions.includes(dimension)) {
|
|
316
|
+
if (!tables_js_1.VectorDimensions.includes(dimension)) {
|
|
312
317
|
throw new Error(`Unsupported vector dimension: ${dimension}`);
|
|
313
318
|
}
|
|
314
|
-
const vectors = (await searchVectors(ctx, args.vector, {
|
|
319
|
+
const vectors = (await (0, index_js_1.searchVectors)(ctx, args.vector, {
|
|
315
320
|
dimension,
|
|
316
321
|
model: args.vectorModel ?? "unknown",
|
|
317
322
|
table: "messages",
|
|
@@ -330,12 +335,12 @@ export const searchMessages = action({
|
|
|
330
335
|
}))
|
|
331
336
|
.sort((a, b) => b.score - a.score);
|
|
332
337
|
const vectorIds = vectorScores.slice(0, limit).map((v) => v.id);
|
|
333
|
-
const messages = await ctx.runQuery(internal.messages._fetchSearchMessages, {
|
|
338
|
+
const messages = await ctx.runQuery(api_js_1.internal.messages._fetchSearchMessages, {
|
|
334
339
|
searchAllMessagesForUserId: args.searchAllMessagesForUserId,
|
|
335
340
|
threadId: args.threadId,
|
|
336
341
|
vectorIds,
|
|
337
342
|
textSearchMessages: textSearchMessages?.filter((m) => !vectorIds.includes(m.embeddingId)),
|
|
338
|
-
messageRange: args.messageRange ?? DEFAULT_MESSAGE_RANGE,
|
|
343
|
+
messageRange: args.messageRange ?? shared_js_1.DEFAULT_MESSAGE_RANGE,
|
|
339
344
|
beforeMessageId: args.beforeMessageId,
|
|
340
345
|
limit,
|
|
341
346
|
});
|
|
@@ -344,21 +349,21 @@ export const searchMessages = action({
|
|
|
344
349
|
return textSearchMessages?.flat() ?? [];
|
|
345
350
|
},
|
|
346
351
|
});
|
|
347
|
-
|
|
352
|
+
exports._fetchSearchMessages = (0, server_js_1.internalQuery)({
|
|
348
353
|
args: {
|
|
349
|
-
threadId: v.optional(v.id("threads")),
|
|
350
|
-
vectorIds: v.array(vVectorId),
|
|
351
|
-
searchAllMessagesForUserId: v.optional(v.string()),
|
|
352
|
-
textSearchMessages: v.optional(v.array(vMessageDoc)),
|
|
353
|
-
messageRange: v.object({ before: v.number(), after: v.number() }),
|
|
354
|
-
beforeMessageId: v.optional(v.id("messages")),
|
|
355
|
-
limit: v.number(),
|
|
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(),
|
|
356
361
|
},
|
|
357
|
-
returns: v.array(vMessageDoc),
|
|
362
|
+
returns: schema_js_1.v.array(schema_js_1.vMessageDoc),
|
|
358
363
|
handler: async (ctx, args) => {
|
|
359
364
|
const beforeMessage = args.beforeMessageId && (await ctx.db.get(args.beforeMessageId));
|
|
360
365
|
const { searchAllMessagesForUserId, threadId } = args;
|
|
361
|
-
assert(searchAllMessagesForUserId || threadId, "Specify searchAllMessagesForUserId or threadId to search");
|
|
366
|
+
(0, convex_helpers_1.assert)(searchAllMessagesForUserId || threadId, "Specify searchAllMessagesForUserId or threadId to search");
|
|
362
367
|
let messages = (await Promise.all(args.vectorIds.map((embeddingId) => ctx.db
|
|
363
368
|
.query("messages")
|
|
364
369
|
.withIndex("embeddingId", (q) => q.eq("embeddingId", embeddingId))
|
|
@@ -438,16 +443,16 @@ export const _fetchSearchMessages = internalQuery({
|
|
|
438
443
|
});
|
|
439
444
|
// returns ranges of messages in order of text search relevance,
|
|
440
445
|
// excluding duplicates in later ranges.
|
|
441
|
-
|
|
446
|
+
exports.textSearch = (0, server_js_1.query)({
|
|
442
447
|
args: {
|
|
443
|
-
threadId: v.optional(v.id("threads")),
|
|
444
|
-
searchAllMessagesForUserId: v.optional(v.string()),
|
|
445
|
-
text: v.string(),
|
|
446
|
-
limit: v.number(),
|
|
447
|
-
beforeMessageId: v.optional(v.id("messages")),
|
|
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")),
|
|
448
453
|
},
|
|
449
454
|
handler: async (ctx, args) => {
|
|
450
|
-
assert(args.searchAllMessagesForUserId || args.threadId, "Specify userId or threadId");
|
|
455
|
+
(0, convex_helpers_1.assert)(args.searchAllMessagesForUserId || args.threadId, "Specify userId or threadId");
|
|
451
456
|
const beforeMessage = args.beforeMessageId && (await ctx.db.get(args.beforeMessageId));
|
|
452
457
|
const order = beforeMessage?.order;
|
|
453
458
|
const messages = await ctx.db
|
|
@@ -473,6 +478,6 @@ export const textSearch = query({
|
|
|
473
478
|
m.stepOrder < beforeMessage.stepOrder))
|
|
474
479
|
.map(publicMessage);
|
|
475
480
|
},
|
|
476
|
-
returns: v.array(vMessageDoc),
|
|
481
|
+
returns: schema_js_1.v.array(schema_js_1.vMessageDoc),
|
|
477
482
|
});
|
|
478
483
|
//# sourceMappingURL=messages.js.map
|