@convex-dev/agent 0.0.1-alpha.0

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 (129) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +55 -0
  3. package/dist/commonjs/client/index.d.ts +198 -0
  4. package/dist/commonjs/client/index.d.ts.map +1 -0
  5. package/dist/commonjs/client/index.js +365 -0
  6. package/dist/commonjs/client/index.js.map +1 -0
  7. package/dist/commonjs/client/types.d.ts +21 -0
  8. package/dist/commonjs/client/types.d.ts.map +1 -0
  9. package/dist/commonjs/client/types.js +2 -0
  10. package/dist/commonjs/client/types.js.map +1 -0
  11. package/dist/commonjs/component/_generated/api.d.ts +12 -0
  12. package/dist/commonjs/component/_generated/api.d.ts.map +1 -0
  13. package/dist/commonjs/component/_generated/api.js +22 -0
  14. package/dist/commonjs/component/_generated/api.js.map +1 -0
  15. package/dist/commonjs/component/_generated/server.d.ts +64 -0
  16. package/dist/commonjs/component/_generated/server.d.ts.map +1 -0
  17. package/dist/commonjs/component/_generated/server.js +74 -0
  18. package/dist/commonjs/component/_generated/server.js.map +1 -0
  19. package/dist/commonjs/component/convex.config.d.ts +3 -0
  20. package/dist/commonjs/component/convex.config.d.ts.map +1 -0
  21. package/dist/commonjs/component/convex.config.js +3 -0
  22. package/dist/commonjs/component/convex.config.js.map +1 -0
  23. package/dist/commonjs/component/lib.d.ts +2 -0
  24. package/dist/commonjs/component/lib.d.ts.map +1 -0
  25. package/dist/commonjs/component/lib.js +2 -0
  26. package/dist/commonjs/component/lib.js.map +1 -0
  27. package/dist/commonjs/component/messages.d.ts +1913 -0
  28. package/dist/commonjs/component/messages.d.ts.map +1 -0
  29. package/dist/commonjs/component/messages.js +787 -0
  30. package/dist/commonjs/component/messages.js.map +1 -0
  31. package/dist/commonjs/component/schema.d.ts +5496 -0
  32. package/dist/commonjs/component/schema.d.ts.map +1 -0
  33. package/dist/commonjs/component/schema.js +97 -0
  34. package/dist/commonjs/component/schema.js.map +1 -0
  35. package/dist/commonjs/component/vector/tables.d.ts +40 -0
  36. package/dist/commonjs/component/vector/tables.d.ts.map +1 -0
  37. package/dist/commonjs/component/vector/tables.js +46 -0
  38. package/dist/commonjs/component/vector/tables.js.map +1 -0
  39. package/dist/commonjs/mapping.d.ts +26 -0
  40. package/dist/commonjs/mapping.d.ts.map +1 -0
  41. package/dist/commonjs/mapping.js +101 -0
  42. package/dist/commonjs/mapping.js.map +1 -0
  43. package/dist/commonjs/package.json +3 -0
  44. package/dist/commonjs/react/index.d.ts +2 -0
  45. package/dist/commonjs/react/index.d.ts.map +1 -0
  46. package/dist/commonjs/react/index.js +8 -0
  47. package/dist/commonjs/react/index.js.map +1 -0
  48. package/dist/commonjs/shared.d.ts +9 -0
  49. package/dist/commonjs/shared.d.ts.map +1 -0
  50. package/dist/commonjs/shared.js +29 -0
  51. package/dist/commonjs/shared.js.map +1 -0
  52. package/dist/commonjs/validators.d.ts +6177 -0
  53. package/dist/commonjs/validators.d.ts.map +1 -0
  54. package/dist/commonjs/validators.js +171 -0
  55. package/dist/commonjs/validators.js.map +1 -0
  56. package/dist/esm/client/index.d.ts +198 -0
  57. package/dist/esm/client/index.d.ts.map +1 -0
  58. package/dist/esm/client/index.js +365 -0
  59. package/dist/esm/client/index.js.map +1 -0
  60. package/dist/esm/client/types.d.ts +21 -0
  61. package/dist/esm/client/types.d.ts.map +1 -0
  62. package/dist/esm/client/types.js +2 -0
  63. package/dist/esm/client/types.js.map +1 -0
  64. package/dist/esm/component/_generated/api.d.ts +12 -0
  65. package/dist/esm/component/_generated/api.d.ts.map +1 -0
  66. package/dist/esm/component/_generated/api.js +22 -0
  67. package/dist/esm/component/_generated/api.js.map +1 -0
  68. package/dist/esm/component/_generated/server.d.ts +64 -0
  69. package/dist/esm/component/_generated/server.d.ts.map +1 -0
  70. package/dist/esm/component/_generated/server.js +74 -0
  71. package/dist/esm/component/_generated/server.js.map +1 -0
  72. package/dist/esm/component/convex.config.d.ts +3 -0
  73. package/dist/esm/component/convex.config.d.ts.map +1 -0
  74. package/dist/esm/component/convex.config.js +3 -0
  75. package/dist/esm/component/convex.config.js.map +1 -0
  76. package/dist/esm/component/lib.d.ts +2 -0
  77. package/dist/esm/component/lib.d.ts.map +1 -0
  78. package/dist/esm/component/lib.js +2 -0
  79. package/dist/esm/component/lib.js.map +1 -0
  80. package/dist/esm/component/messages.d.ts +1913 -0
  81. package/dist/esm/component/messages.d.ts.map +1 -0
  82. package/dist/esm/component/messages.js +787 -0
  83. package/dist/esm/component/messages.js.map +1 -0
  84. package/dist/esm/component/schema.d.ts +5496 -0
  85. package/dist/esm/component/schema.d.ts.map +1 -0
  86. package/dist/esm/component/schema.js +97 -0
  87. package/dist/esm/component/schema.js.map +1 -0
  88. package/dist/esm/component/vector/tables.d.ts +40 -0
  89. package/dist/esm/component/vector/tables.d.ts.map +1 -0
  90. package/dist/esm/component/vector/tables.js +46 -0
  91. package/dist/esm/component/vector/tables.js.map +1 -0
  92. package/dist/esm/mapping.d.ts +26 -0
  93. package/dist/esm/mapping.d.ts.map +1 -0
  94. package/dist/esm/mapping.js +101 -0
  95. package/dist/esm/mapping.js.map +1 -0
  96. package/dist/esm/package.json +3 -0
  97. package/dist/esm/react/index.d.ts +2 -0
  98. package/dist/esm/react/index.d.ts.map +1 -0
  99. package/dist/esm/react/index.js +8 -0
  100. package/dist/esm/react/index.js.map +1 -0
  101. package/dist/esm/shared.d.ts +9 -0
  102. package/dist/esm/shared.d.ts.map +1 -0
  103. package/dist/esm/shared.js +29 -0
  104. package/dist/esm/shared.js.map +1 -0
  105. package/dist/esm/validators.d.ts +6177 -0
  106. package/dist/esm/validators.d.ts.map +1 -0
  107. package/dist/esm/validators.js +171 -0
  108. package/dist/esm/validators.js.map +1 -0
  109. package/package.json +91 -0
  110. package/react/package.json +5 -0
  111. package/src/client/index.ts +659 -0
  112. package/src/client/types.ts +54 -0
  113. package/src/component/_generated/api.d.ts +1497 -0
  114. package/src/component/_generated/api.js +23 -0
  115. package/src/component/_generated/dataModel.d.ts +60 -0
  116. package/src/component/_generated/server.d.ts +149 -0
  117. package/src/component/_generated/server.js +90 -0
  118. package/src/component/convex.config.ts +3 -0
  119. package/src/component/lib.test.ts +13 -0
  120. package/src/component/lib.ts +2 -0
  121. package/src/component/messages.ts +959 -0
  122. package/src/component/schema.ts +101 -0
  123. package/src/component/setup.test.ts +5 -0
  124. package/src/component/vector/tables.ts +92 -0
  125. package/src/mapping.ts +160 -0
  126. package/src/react/index.ts +8 -0
  127. package/src/shared.ts +35 -0
  128. package/src/validators.test.ts +101 -0
  129. package/src/validators.ts +258 -0
@@ -0,0 +1,365 @@
1
+ import { generateText, generateObject, streamText, streamObject, convertToCoreMessages, coreMessageSchema, } from "ai";
2
+ // TODO: is this the only dependency that needs helpers in client?
3
+ import { assert } from "convex-helpers";
4
+ import { DEFAULT_MESSAGE_RANGE, extractText } from "../shared";
5
+ import { serializeMessageWithId, serializeNewMessagesInStep, serializeStep, } from "../mapping";
6
+ export class Agent {
7
+ component;
8
+ options;
9
+ constructor(component, options) {
10
+ this.component = component;
11
+ this.options = options;
12
+ }
13
+ async startChat(ctx, args) {
14
+ const chatDoc = await ctx.runMutation(this.component.messages.createChat, {
15
+ defaultSystemPrompt: this.options.defaultSystemPrompt,
16
+ userId: args.userId,
17
+ title: args.title,
18
+ summary: args.summary,
19
+ parentChatIds: args.parentChatIds,
20
+ });
21
+ if (!("runAction" in ctx)) {
22
+ return { chatId: chatDoc._id };
23
+ }
24
+ const { chat } = await this.continueChat(ctx, {
25
+ chatId: chatDoc._id,
26
+ userId: args.userId,
27
+ });
28
+ return {
29
+ chatId: chatDoc._id,
30
+ chat,
31
+ };
32
+ }
33
+ async continueChat(ctx, { chatId, userId, }) {
34
+ // return this.component.continueChat(ctx, args);
35
+ return {
36
+ chat: {
37
+ generateText: this.generateText.bind(this, ctx, { userId, chatId }),
38
+ streamText: this.streamText.bind(this, ctx, { userId, chatId }),
39
+ generateObject: this.generateObject.bind(this, ctx, { userId, chatId }),
40
+ streamObject: this.streamObject.bind(this, ctx, { userId, chatId }),
41
+ },
42
+ };
43
+ }
44
+ async fetchContextMessages(ctx, args) {
45
+ assert(args.userId || args.chatId, "Specify userId or chatId");
46
+ // Fetch the latest messages from the chat
47
+ const contextMessages = [];
48
+ if (args.searchOptions?.textSearch || args.searchOptions?.vectorSearch) {
49
+ if (!("runAction" in ctx)) {
50
+ throw new Error("searchUserMessages only works in an action");
51
+ }
52
+ const searchMessages = await ctx.runAction(this.component.messages.searchMessages, {
53
+ userId: args.searchOtherChats ? args.userId : undefined,
54
+ chatId: args.chatId,
55
+ ...(await this.searchWithDefaults(args, args.messages)),
56
+ });
57
+ contextMessages.push(...searchMessages.map((m) => m.message));
58
+ }
59
+ if (args.chatId) {
60
+ const { messages } = await ctx.runQuery(this.component.messages.getChatMessages, {
61
+ chatId: args.chatId,
62
+ isTool: args.includeToolMessages ?? false,
63
+ limit: args.recentMessages,
64
+ order: "desc",
65
+ statuses: ["success"],
66
+ });
67
+ contextMessages.push(...messages.map((m) => m.message));
68
+ }
69
+ return contextMessages;
70
+ }
71
+ async saveMessages(ctx, args) {
72
+ const result = await ctx.runMutation(this.component.messages.addMessages, {
73
+ chatId: args.chatId,
74
+ agentName: this.options.name,
75
+ model: this.options.chat.modelId,
76
+ messages: args.messages.map(serializeMessageWithId),
77
+ failPendingSteps: true,
78
+ pending: args.pending ?? false,
79
+ });
80
+ return {
81
+ lastMessageId: result.messages.at(-1)?._id,
82
+ };
83
+ }
84
+ async replaceMessages(ctx, args) {
85
+ throw new Error("Not implemented");
86
+ }
87
+ async saveStep(ctx, args) {
88
+ const step = serializeStep(args.step);
89
+ const messages = serializeNewMessagesInStep(args.step);
90
+ await ctx.runMutation(this.component.messages.addSteps, {
91
+ chatId: args.chatId,
92
+ messageId: args.messageId,
93
+ steps: [{ step, messages: messages }],
94
+ failPendingSteps: false,
95
+ });
96
+ }
97
+ async completeMessage(ctx, args) {
98
+ const result = args.result;
99
+ if (result.kind === "success") {
100
+ await ctx.runMutation(this.component.messages.commitMessage, {
101
+ messageId: args.messageId,
102
+ });
103
+ }
104
+ else {
105
+ await ctx.runMutation(this.component.messages.addSteps, {
106
+ chatId: args.chatId,
107
+ messageId: args.messageId,
108
+ steps: [],
109
+ failPendingSteps: true,
110
+ });
111
+ }
112
+ }
113
+ /**
114
+ * This behaves like {@link generateText} except that it add context based on
115
+ * the userId and chatId. It saves the input and resulting messages to the
116
+ * chat, if specified.
117
+ * however. To do that, use {@link continueChat} or {@link saveMessages}.
118
+ * @param ctx The context of the agent.
119
+ * @param args The arguments to the generateText function.
120
+ * @returns The result of the generateText function.
121
+ */
122
+ async generateText(ctx, { userId, chatId, }, args) {
123
+ const { prompt, messages: raw, ...rest } = args;
124
+ const messages = promptOrMessagesToCoreMessages({ prompt, messages: raw });
125
+ const contextMessages = await this.fetchContextMessages(ctx, {
126
+ ...args,
127
+ userId,
128
+ chatId,
129
+ messages,
130
+ });
131
+ let messageId;
132
+ if (chatId) {
133
+ const { lastMessageId } = await this.saveMessages(ctx, {
134
+ chatId,
135
+ // TODO: only save the last message unless explicitly told to save all
136
+ messages,
137
+ pending: true,
138
+ });
139
+ messageId = lastMessageId;
140
+ }
141
+ try {
142
+ const result = await generateText({
143
+ model: this.options.chat,
144
+ messages: [...contextMessages, ...messages],
145
+ system: this.options.defaultSystemPrompt,
146
+ ...rest,
147
+ onStepFinish: async (step) => {
148
+ if (chatId && messageId) {
149
+ await this.saveStep(ctx, {
150
+ chatId,
151
+ messageId,
152
+ step,
153
+ });
154
+ }
155
+ return args.onStepFinish?.(step);
156
+ },
157
+ });
158
+ return result;
159
+ }
160
+ catch (error) {
161
+ if (chatId && messageId) {
162
+ await ctx.runMutation(this.component.messages.rollbackMessage, {
163
+ messageId,
164
+ error: error.message,
165
+ });
166
+ }
167
+ throw error;
168
+ }
169
+ }
170
+ async streamText(ctx, { userId, chatId }, args) {
171
+ const { prompt, messages: raw, ...rest } = args;
172
+ const messages = promptOrMessagesToCoreMessages({ prompt, messages: raw });
173
+ const contextMessages = await this.fetchContextMessages(ctx, {
174
+ ...args,
175
+ userId,
176
+ chatId,
177
+ messages,
178
+ });
179
+ let messageId;
180
+ if (chatId) {
181
+ const { lastMessageId } = await this.saveMessages(ctx, {
182
+ chatId,
183
+ // TODO: only save the last message unless explicitly told to save all
184
+ messages,
185
+ pending: true,
186
+ });
187
+ messageId = lastMessageId;
188
+ }
189
+ return streamText({
190
+ model: this.options.chat,
191
+ messages: [...contextMessages, ...messages],
192
+ system: this.options.defaultSystemPrompt,
193
+ ...rest,
194
+ onChunk: async (chunk) => {
195
+ console.log("onChunk", chunk);
196
+ return args.onChunk?.(chunk);
197
+ },
198
+ onError: async (error) => {
199
+ console.error("onError", error);
200
+ if (chatId && messageId) {
201
+ await ctx.runMutation(this.component.messages.rollbackMessage, {
202
+ messageId,
203
+ error: error.error.message,
204
+ });
205
+ }
206
+ return args.onError?.(error);
207
+ },
208
+ onFinish: async (result) => {
209
+ result.response.messages.forEach((message) => {
210
+ console.log("onFinish", message);
211
+ });
212
+ return args.onFinish?.(result);
213
+ },
214
+ onStepFinish: async (step) => {
215
+ console.log("onStepFinish", step);
216
+ if (chatId && messageId) {
217
+ await this.saveStep(ctx, {
218
+ chatId,
219
+ messageId,
220
+ step,
221
+ });
222
+ }
223
+ return args.onStepFinish?.(step);
224
+ },
225
+ });
226
+ }
227
+ // TODO: not sure why it needs to extend string
228
+ async generateObject(ctx, { userId, chatId }, args) {
229
+ const { prompt, messages: raw, ...rest } = args;
230
+ const messages = promptOrMessagesToCoreMessages({ prompt, messages: raw });
231
+ const contextMessages = await this.fetchContextMessages(ctx, {
232
+ ...args,
233
+ userId,
234
+ chatId,
235
+ messages,
236
+ });
237
+ return generateObject({
238
+ model: this.options.chat,
239
+ messages: [...contextMessages, ...messages],
240
+ ...rest,
241
+ });
242
+ }
243
+ async streamObject(ctx, { userId, chatId }, args) {
244
+ const { prompt, messages: raw, ...rest } = args;
245
+ const messages = promptOrMessagesToCoreMessages({ prompt, messages: raw });
246
+ const contextMessages = await this.fetchContextMessages(ctx, {
247
+ ...args,
248
+ userId,
249
+ chatId,
250
+ messages,
251
+ });
252
+ return streamObject({
253
+ model: this.options.chat,
254
+ messages: [...contextMessages, ...messages],
255
+ ...rest,
256
+ onError: async (error) => {
257
+ console.error("onError", error);
258
+ return args.onError?.(error);
259
+ },
260
+ onFinish: async (result) => {
261
+ console.log("onFinish", result);
262
+ },
263
+ });
264
+ }
265
+ async searchWithDefaults(searchArgs, messages) {
266
+ assert(searchArgs.searchOptions?.textSearch ||
267
+ searchArgs.searchOptions?.vectorSearch, "searchOptions is required");
268
+ assert(messages.length > 0, "Core messages cannot be empty");
269
+ const text = extractText(messages.at(-1));
270
+ const search = {
271
+ limit: searchArgs.searchOptions?.limit ?? 10,
272
+ messageRange: {
273
+ ...DEFAULT_MESSAGE_RANGE,
274
+ ...searchArgs.searchOptions?.messageRange,
275
+ },
276
+ text: extractText(messages.at(-1)),
277
+ };
278
+ if (searchArgs.searchOptions?.vectorSearch &&
279
+ text &&
280
+ this.options.textEmbedding) {
281
+ search.vector = (await this.options.textEmbedding.doEmbed({
282
+ values: [text],
283
+ })).embeddings[0];
284
+ search.vectorModel = this.options.textEmbedding.modelId;
285
+ }
286
+ return search;
287
+ }
288
+ async getChatMessages(ctx, args) {
289
+ const messages = await ctx.runQuery(this.component.messages.getChatMessages, {
290
+ chatId: args.chatId,
291
+ limit: args.limit,
292
+ statuses: args.statuses,
293
+ cursor: args.cursor,
294
+ isTool: args.includeToolMessages,
295
+ order: args.order,
296
+ });
297
+ return {
298
+ messages: messages.messages
299
+ .map((m) => m && { ...m.message, id: m._id })
300
+ .filter((m) => m !== undefined),
301
+ continueCursor: messages.continueCursor,
302
+ isDone: messages.isDone,
303
+ };
304
+ }
305
+ async getSteps(ctx, args) {
306
+ return { steps: [] };
307
+ }
308
+ }
309
+ // type ToolParameters = ZodTypeAny | Schema<unknown>; // TODO: support convex validator
310
+ // type inferParameters<PARAMETERS extends ToolParameters> =
311
+ // PARAMETERS extends Schema<unknown>
312
+ // ? PARAMETERS["_type"]
313
+ // : PARAMETERS extends z.ZodTypeAny
314
+ // ? z.infer<PARAMETERS>
315
+ // : never;
316
+ // /**
317
+ // * This is a wrapper around the ai.tool function that adds support for
318
+ // * userId and chatId to the tool, if they're called within a chat from an agent.
319
+ // * @param tool The AI tool. See https://sdk.vercel.ai/docs/ai-sdk-core/tools-and-tool-calling
320
+ // * @returns The same tool, but with userId and chatId args support added.
321
+ // */
322
+ // export function tool<PARAMETERS extends ToolParameters, RESULT>(
323
+ // tool: Tool<PARAMETERS, RESULT> & {
324
+ // execute: (
325
+ // args: inferParameters<PARAMETERS> & { userId?: string; chatId?: string },
326
+ // options: ToolExecutionOptions
327
+ // ) => PromiseLike<RESULT>;
328
+ // }
329
+ // ): Tool<PARAMETERS, RESULT> & {
330
+ // execute: (
331
+ // args: inferParameters<PARAMETERS>,
332
+ // options: ToolExecutionOptions
333
+ // ) => PromiseLike<RESULT>;
334
+ // } {
335
+ // // eslint-disable-next-line @typescript-eslint/no-explicit-any
336
+ // (tool as any).__acceptUserIdAndChatId = true;
337
+ // return tool;
338
+ // }
339
+ export function promptOrMessagesToCoreMessages(args) {
340
+ const messages = [];
341
+ if (args.system) {
342
+ messages.push({ role: "system", content: args.system });
343
+ }
344
+ if (!args.messages) {
345
+ assert(args.prompt, "messages or prompt is required");
346
+ messages.push({ role: "user", content: args.prompt });
347
+ }
348
+ else if (args.messages.some((m) => typeof m === "object" &&
349
+ m !== null &&
350
+ (m.role === "data" || // UI-only role
351
+ "toolInvocations" in m || // UI-specific field
352
+ "parts" in m || // UI-specific field
353
+ "experimental_attachments" in m))) {
354
+ messages.push(...convertToCoreMessages(args.messages));
355
+ }
356
+ else {
357
+ messages.push(...coreMessageSchema.array().parse(args.messages));
358
+ }
359
+ assert(messages.length > 0, "Messages must contain at least one message");
360
+ return messages;
361
+ }
362
+ // export function convexValidatorSchema<T>(validator: Validator<unknown>) {
363
+ // return ai.jsonSchema(convexToJsonSchema(validator));
364
+ // }
365
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { GenericQueryCtx, GenericDataModel, GenericMutationCtx, Expand, FunctionReference, GenericActionCtx } from "convex/server";
2
+ import { GenericId } from "convex/values";
3
+ export type RunQueryCtx = {
4
+ runQuery: GenericQueryCtx<GenericDataModel>["runQuery"];
5
+ };
6
+ export type RunMutationCtx = {
7
+ runQuery: GenericMutationCtx<GenericDataModel>["runQuery"];
8
+ runMutation: GenericMutationCtx<GenericDataModel>["runMutation"];
9
+ };
10
+ export type RunActionCtx = {
11
+ runQuery: GenericActionCtx<GenericDataModel>["runQuery"];
12
+ runMutation: GenericActionCtx<GenericDataModel>["runMutation"];
13
+ runAction: GenericActionCtx<GenericDataModel>["runAction"];
14
+ };
15
+ export type OpaqueIds<T> = T extends GenericId<infer _T> ? string : T extends (infer U)[] ? OpaqueIds<U>[] : T extends ArrayBuffer ? ArrayBuffer : T extends object ? {
16
+ [K in keyof T]: OpaqueIds<T[K]>;
17
+ } : T;
18
+ export type UseApi<API> = Expand<{
19
+ [mod in keyof API]: API[mod] extends FunctionReference<infer FType, "public", infer FArgs, infer FReturnType, infer FComponentPath> ? FunctionReference<FType, "internal", OpaqueIds<FArgs>, OpaqueIds<FReturnType>, FComponentPath> : UseApi<API[mod]>;
20
+ }>;
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC;CACzD,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,WAAW,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAC;CAClE,CAAC;AACF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC;IACzD,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAC;IAC/D,SAAS,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,IACrB,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,CAAC,GACzB,MAAM,GACN,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,SAAS,CAAC,CAAC,CAAC,EAAE,GACd,CAAC,SAAS,WAAW,GACnB,WAAW,GACX,CAAC,SAAS,MAAM,GACd;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,GACD,CAAC,CAAC;AAEd,MAAM,MAAM,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC;KAC9B,GAAG,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,iBAAiB,CACpD,MAAM,KAAK,EACX,QAAQ,EACR,MAAM,KAAK,EACX,MAAM,WAAW,EACjB,MAAM,cAAc,CACrB,GACG,iBAAiB,CACf,KAAK,EACL,UAAU,EACV,SAAS,CAAC,KAAK,CAAC,EAChB,SAAS,CAAC,WAAW,CAAC,EACtB,cAAc,CACf,GACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACrB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A utility for referencing Convex functions in your app's API.
3
+ *
4
+ * Usage:
5
+ * ```js
6
+ * const myFunctionReference = api.myModule.myFunction;
7
+ * ```
8
+ */
9
+ export const api: import("convex/server").AnyApi;
10
+ export const internal: import("convex/server").AnyApi;
11
+ export const components: import("convex/server").AnyChildComponents;
12
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/component/_generated/api.js"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,iDAA0B;AAC1B,sDAA+B;AAC/B,oEAA8C"}
@@ -0,0 +1,22 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * Generated `api` utility.
4
+ *
5
+ * THIS CODE IS AUTOMATICALLY GENERATED.
6
+ *
7
+ * To regenerate, run `npx convex dev`.
8
+ * @module
9
+ */
10
+ import { anyApi, componentsGeneric } from "convex/server";
11
+ /**
12
+ * A utility for referencing Convex functions in your app's API.
13
+ *
14
+ * Usage:
15
+ * ```js
16
+ * const myFunctionReference = api.myModule.myFunction;
17
+ * ```
18
+ */
19
+ export const api = anyApi;
20
+ export const internal = anyApi;
21
+ export const components = componentsGeneric();
22
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/component/_generated/api.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Define a query in this Convex app's public API.
3
+ *
4
+ * This function will be allowed to read your Convex database and will be accessible from the client.
5
+ *
6
+ * @param func - The query function. It receives a {@link QueryCtx} as its first argument.
7
+ * @returns The wrapped query. Include this as an `export` to name it and make it accessible.
8
+ */
9
+ export const query: import("convex/server").QueryBuilder<any, "public">;
10
+ /**
11
+ * Define a query that is only accessible from other Convex functions (but not from the client).
12
+ *
13
+ * This function will be allowed to read from your Convex database. It will not be accessible from the client.
14
+ *
15
+ * @param func - The query function. It receives a {@link QueryCtx} as its first argument.
16
+ * @returns The wrapped query. Include this as an `export` to name it and make it accessible.
17
+ */
18
+ export const internalQuery: import("convex/server").QueryBuilder<any, "internal">;
19
+ /**
20
+ * Define a mutation in this Convex app's public API.
21
+ *
22
+ * This function will be allowed to modify your Convex database and will be accessible from the client.
23
+ *
24
+ * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument.
25
+ * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible.
26
+ */
27
+ export const mutation: import("convex/server").MutationBuilder<any, "public">;
28
+ /**
29
+ * Define a mutation that is only accessible from other Convex functions (but not from the client).
30
+ *
31
+ * This function will be allowed to modify your Convex database. It will not be accessible from the client.
32
+ *
33
+ * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument.
34
+ * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible.
35
+ */
36
+ export const internalMutation: import("convex/server").MutationBuilder<any, "internal">;
37
+ /**
38
+ * Define an action in this Convex app's public API.
39
+ *
40
+ * An action is a function which can execute any JavaScript code, including non-deterministic
41
+ * code and code with side-effects, like calling third-party services.
42
+ * They can be run in Convex's JavaScript environment or in Node.js using the "use node" directive.
43
+ * They can interact with the database indirectly by calling queries and mutations using the {@link ActionCtx}.
44
+ *
45
+ * @param func - The action. It receives an {@link ActionCtx} as its first argument.
46
+ * @returns The wrapped action. Include this as an `export` to name it and make it accessible.
47
+ */
48
+ export const action: import("convex/server").ActionBuilder<any, "public">;
49
+ /**
50
+ * Define an action that is only accessible from other Convex functions (but not from the client).
51
+ *
52
+ * @param func - The function. It receives an {@link ActionCtx} as its first argument.
53
+ * @returns The wrapped function. Include this as an `export` to name it and make it accessible.
54
+ */
55
+ export const internalAction: import("convex/server").ActionBuilder<any, "internal">;
56
+ /**
57
+ * Define a Convex HTTP action.
58
+ *
59
+ * @param func - The function. It receives an {@link ActionCtx} as its first argument, and a `Request` object
60
+ * as its second.
61
+ * @returns The wrapped endpoint function. Route a URL path to this function in `convex/http.js`.
62
+ */
63
+ export const httpAction: (func: (ctx: import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, request: Request) => Promise<Response>) => import("convex/server").PublicHttpAction;
64
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/component/_generated/server.js"],"names":[],"mappings":"AAqBA;;;;;;;GAOG;AACH,wEAAkC;AAElC;;;;;;;GAOG;AACH,kFAAkD;AAElD;;;;;;;GAOG;AACH,8EAAwC;AAExC;;;;;;;GAOG;AACH,wFAAwD;AAExD;;;;;;;;;;GAUG;AACH,0EAAoC;AAEpC;;;;;GAKG;AACH,oFAAoD;AAEpD;;;;;;GAMG;AACH,8MAA4C"}
@@ -0,0 +1,74 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * Generated utilities for implementing server-side Convex query and mutation functions.
4
+ *
5
+ * THIS CODE IS AUTOMATICALLY GENERATED.
6
+ *
7
+ * To regenerate, run `npx convex dev`.
8
+ * @module
9
+ */
10
+ import { actionGeneric, httpActionGeneric, queryGeneric, mutationGeneric, internalActionGeneric, internalMutationGeneric, internalQueryGeneric, componentsGeneric, } from "convex/server";
11
+ /**
12
+ * Define a query in this Convex app's public API.
13
+ *
14
+ * This function will be allowed to read your Convex database and will be accessible from the client.
15
+ *
16
+ * @param func - The query function. It receives a {@link QueryCtx} as its first argument.
17
+ * @returns The wrapped query. Include this as an `export` to name it and make it accessible.
18
+ */
19
+ export const query = queryGeneric;
20
+ /**
21
+ * Define a query that is only accessible from other Convex functions (but not from the client).
22
+ *
23
+ * This function will be allowed to read from your Convex database. It will not be accessible from the client.
24
+ *
25
+ * @param func - The query function. It receives a {@link QueryCtx} as its first argument.
26
+ * @returns The wrapped query. Include this as an `export` to name it and make it accessible.
27
+ */
28
+ export const internalQuery = internalQueryGeneric;
29
+ /**
30
+ * Define a mutation in this Convex app's public API.
31
+ *
32
+ * This function will be allowed to modify your Convex database and will be accessible from the client.
33
+ *
34
+ * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument.
35
+ * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible.
36
+ */
37
+ export const mutation = mutationGeneric;
38
+ /**
39
+ * Define a mutation that is only accessible from other Convex functions (but not from the client).
40
+ *
41
+ * This function will be allowed to modify your Convex database. It will not be accessible from the client.
42
+ *
43
+ * @param func - The mutation function. It receives a {@link MutationCtx} as its first argument.
44
+ * @returns The wrapped mutation. Include this as an `export` to name it and make it accessible.
45
+ */
46
+ export const internalMutation = internalMutationGeneric;
47
+ /**
48
+ * Define an action in this Convex app's public API.
49
+ *
50
+ * An action is a function which can execute any JavaScript code, including non-deterministic
51
+ * code and code with side-effects, like calling third-party services.
52
+ * They can be run in Convex's JavaScript environment or in Node.js using the "use node" directive.
53
+ * They can interact with the database indirectly by calling queries and mutations using the {@link ActionCtx}.
54
+ *
55
+ * @param func - The action. It receives an {@link ActionCtx} as its first argument.
56
+ * @returns The wrapped action. Include this as an `export` to name it and make it accessible.
57
+ */
58
+ export const action = actionGeneric;
59
+ /**
60
+ * Define an action that is only accessible from other Convex functions (but not from the client).
61
+ *
62
+ * @param func - The function. It receives an {@link ActionCtx} as its first argument.
63
+ * @returns The wrapped function. Include this as an `export` to name it and make it accessible.
64
+ */
65
+ export const internalAction = internalActionGeneric;
66
+ /**
67
+ * Define a Convex HTTP action.
68
+ *
69
+ * @param func - The function. It receives an {@link ActionCtx} as its first argument, and a `Request` object
70
+ * as its second.
71
+ * @returns The wrapped endpoint function. Route a URL path to this function in `convex/http.js`.
72
+ */
73
+ export const httpAction = httpActionGeneric;
74
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/component/_generated/server.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;;;;GAOG;AAEH,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,YAAY,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("convex/server").ComponentDefinition<any>;
2
+ export default _default;
3
+ //# sourceMappingURL=convex.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convex.config.d.ts","sourceRoot":"","sources":["../../../src/component/convex.config.ts"],"names":[],"mappings":";AAEA,wBAAwC"}
@@ -0,0 +1,3 @@
1
+ import { defineComponent } from "convex/server";
2
+ export default defineComponent("agent");
3
+ //# sourceMappingURL=convex.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convex.config.js","sourceRoot":"","sources":["../../../src/component/convex.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAe,eAAe,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../src/component/lib.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/component/lib.ts"],"names":[],"mappings":""}