@convex-dev/agent 0.1.6 → 0.1.7-alpha.1

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 (106) hide show
  1. package/README.md +23 -12
  2. package/dist/commonjs/client/_generated/_ignore.d.ts +1 -0
  3. package/dist/commonjs/client/_generated/_ignore.d.ts.map +1 -0
  4. package/dist/commonjs/client/_generated/_ignore.js +3 -0
  5. package/dist/commonjs/client/_generated/_ignore.js.map +1 -0
  6. package/dist/commonjs/client/files.d.ts +57 -0
  7. package/dist/commonjs/client/files.d.ts.map +1 -0
  8. package/dist/commonjs/client/files.js +124 -0
  9. package/dist/commonjs/client/files.js.map +1 -0
  10. package/dist/commonjs/client/index.d.ts +487 -318
  11. package/dist/commonjs/client/index.d.ts.map +1 -1
  12. package/dist/commonjs/client/index.js +652 -550
  13. package/dist/commonjs/client/index.js.map +1 -1
  14. package/dist/commonjs/client/types.d.ts +35 -5
  15. package/dist/commonjs/client/types.d.ts.map +1 -1
  16. package/dist/commonjs/component/_generated/api.d.ts +47 -711
  17. package/dist/commonjs/component/files.d.ts +66 -21
  18. package/dist/commonjs/component/files.d.ts.map +1 -1
  19. package/dist/commonjs/component/files.js +71 -26
  20. package/dist/commonjs/component/files.js.map +1 -1
  21. package/dist/commonjs/component/messages.d.ts +31 -499
  22. package/dist/commonjs/component/messages.d.ts.map +1 -1
  23. package/dist/commonjs/component/messages.js +45 -125
  24. package/dist/commonjs/component/messages.js.map +1 -1
  25. package/dist/commonjs/component/schema.d.ts +949 -3785
  26. package/dist/commonjs/component/schema.d.ts.map +1 -1
  27. package/dist/commonjs/component/schema.js +9 -25
  28. package/dist/commonjs/component/schema.js.map +1 -1
  29. package/dist/commonjs/component/streams.d.ts +3 -3
  30. package/dist/commonjs/mapping.d.ts +28 -19
  31. package/dist/commonjs/mapping.d.ts.map +1 -1
  32. package/dist/commonjs/mapping.js +136 -81
  33. package/dist/commonjs/mapping.js.map +1 -1
  34. package/dist/commonjs/react/toUIMessages.d.ts.map +1 -1
  35. package/dist/commonjs/react/toUIMessages.js +12 -6
  36. package/dist/commonjs/react/toUIMessages.js.map +1 -1
  37. package/dist/commonjs/react/usePaginatedQuery.d.ts.map +1 -1
  38. package/dist/commonjs/react/usePaginatedQuery.js +0 -19
  39. package/dist/commonjs/react/usePaginatedQuery.js.map +1 -1
  40. package/dist/commonjs/validators.d.ts +851 -3388
  41. package/dist/commonjs/validators.d.ts.map +1 -1
  42. package/dist/commonjs/validators.js +11 -37
  43. package/dist/commonjs/validators.js.map +1 -1
  44. package/dist/commonjs.tsbuildinfo +1 -1
  45. package/dist/esm/client/_generated/_ignore.d.ts +1 -0
  46. package/dist/esm/client/_generated/_ignore.d.ts.map +1 -0
  47. package/dist/esm/client/_generated/_ignore.js +3 -0
  48. package/dist/esm/client/_generated/_ignore.js.map +1 -0
  49. package/dist/esm/client/files.d.ts +57 -0
  50. package/dist/esm/client/files.d.ts.map +1 -0
  51. package/dist/esm/client/files.js +124 -0
  52. package/dist/esm/client/files.js.map +1 -0
  53. package/dist/esm/client/index.d.ts +487 -318
  54. package/dist/esm/client/index.d.ts.map +1 -1
  55. package/dist/esm/client/index.js +652 -550
  56. package/dist/esm/client/index.js.map +1 -1
  57. package/dist/esm/client/types.d.ts +35 -5
  58. package/dist/esm/client/types.d.ts.map +1 -1
  59. package/dist/esm/component/_generated/api.d.ts +47 -711
  60. package/dist/esm/component/files.d.ts +66 -21
  61. package/dist/esm/component/files.d.ts.map +1 -1
  62. package/dist/esm/component/files.js +71 -26
  63. package/dist/esm/component/files.js.map +1 -1
  64. package/dist/esm/component/messages.d.ts +31 -499
  65. package/dist/esm/component/messages.d.ts.map +1 -1
  66. package/dist/esm/component/messages.js +45 -125
  67. package/dist/esm/component/messages.js.map +1 -1
  68. package/dist/esm/component/schema.d.ts +949 -3785
  69. package/dist/esm/component/schema.d.ts.map +1 -1
  70. package/dist/esm/component/schema.js +9 -25
  71. package/dist/esm/component/schema.js.map +1 -1
  72. package/dist/esm/component/streams.d.ts +3 -3
  73. package/dist/esm/mapping.d.ts +28 -19
  74. package/dist/esm/mapping.d.ts.map +1 -1
  75. package/dist/esm/mapping.js +136 -81
  76. package/dist/esm/mapping.js.map +1 -1
  77. package/dist/esm/react/toUIMessages.d.ts.map +1 -1
  78. package/dist/esm/react/toUIMessages.js +12 -6
  79. package/dist/esm/react/toUIMessages.js.map +1 -1
  80. package/dist/esm/react/usePaginatedQuery.d.ts.map +1 -1
  81. package/dist/esm/react/usePaginatedQuery.js +0 -19
  82. package/dist/esm/react/usePaginatedQuery.js.map +1 -1
  83. package/dist/esm/validators.d.ts +851 -3388
  84. package/dist/esm/validators.d.ts.map +1 -1
  85. package/dist/esm/validators.js +11 -37
  86. package/dist/esm/validators.js.map +1 -1
  87. package/dist/esm.tsbuildinfo +1 -1
  88. package/package.json +11 -9
  89. package/src/client/_generated/_ignore.ts +1 -0
  90. package/src/client/files.ts +167 -0
  91. package/src/client/index.test.ts +127 -1
  92. package/src/client/index.ts +970 -812
  93. package/src/client/setup.test.ts +29 -0
  94. package/src/client/types.ts +41 -3
  95. package/src/component/_generated/api.d.ts +47 -711
  96. package/src/component/files.test.ts +130 -0
  97. package/src/component/files.ts +83 -27
  98. package/src/component/messages.test.ts +2 -1
  99. package/src/component/messages.ts +47 -137
  100. package/src/component/schema.ts +8 -28
  101. package/src/mapping.test.ts +163 -0
  102. package/src/mapping.ts +173 -103
  103. package/src/react/deltas.test.ts +4 -1
  104. package/src/react/toUIMessages.ts +12 -6
  105. package/src/react/usePaginatedQuery.ts +0 -31
  106. package/src/validators.ts +33 -47
@@ -67,7 +67,6 @@ type UsePaginatedQueryState = {
67
67
  const splitQuery =
68
68
  (key: QueryPageKey, splitCursor: string, continueCursor: string) =>
69
69
  (prevState: UsePaginatedQueryState) => {
70
- console.log("splitQuery", key, splitCursor, continueCursor);
71
70
  const queries = { ...prevState.queries };
72
71
  const splitKey1 = prevState.nextPageKey;
73
72
  const splitKey2 = prevState.nextPageKey + 1;
@@ -105,7 +104,6 @@ const splitQuery =
105
104
 
106
105
  const completeSplitQuery =
107
106
  (key: QueryPageKey) => (prevState: UsePaginatedQueryState) => {
108
- console.log("completeSplitQuery", key);
109
107
  const completedSplit = prevState.ongoingSplits[key];
110
108
  if (completedSplit === undefined) {
111
109
  return prevState;
@@ -143,7 +141,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
143
141
  args: PaginatedQueryArgs<Query> | "skip",
144
142
  options: { initialNumItems: number }
145
143
  ): UsePaginatedQueryReturnType<Query> {
146
- console.log("usePaginatedQuery", query, args, options);
147
144
  if (
148
145
  typeof options?.initialNumItems !== "number" ||
149
146
  options.initialNumItems < 0
@@ -158,7 +155,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
158
155
  const createInitialState = useMemo(() => {
159
156
  return () => {
160
157
  const id = nextPaginationId();
161
- console.log("createInitialState", id, queryName, argsObject);
162
158
  return {
163
159
  query,
164
160
  args: argsObject as Record<string, Value>,
@@ -208,7 +204,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
208
204
  skip !== state.skip
209
205
  ) {
210
206
  currState = createInitialState();
211
- console.log("resetting state", currState);
212
207
  setState(currState);
213
208
  }
214
209
  const convexClient = useConvex();
@@ -225,14 +220,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
225
220
  const allItems = [];
226
221
  for (const pageKey of currState.pageKeys) {
227
222
  currResult = resultsObject[pageKey];
228
- console.log({
229
- pageKey,
230
- continue: currResult?.continueCursor,
231
- cursor: currState.queries[pageKey]?.args?.paginationOpts?.cursor,
232
- split: currResult?.splitCursor,
233
- status: currResult?.pageStatus,
234
- length: currResult?.page?.length,
235
- });
236
223
  if (currResult === undefined) {
237
224
  break;
238
225
  }
@@ -264,13 +251,11 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
264
251
  }
265
252
  const ongoingSplit = currState.ongoingSplits[pageKey];
266
253
  if (ongoingSplit !== undefined) {
267
- console.log("ongoingSplit", pageKey, ongoingSplit);
268
254
  if (
269
255
  resultsObject[ongoingSplit[0]] !== undefined &&
270
256
  resultsObject[ongoingSplit[1]] !== undefined
271
257
  ) {
272
258
  // Both pages of the split have results now. Swap them in.
273
- console.log("completeSplitQuery", pageKey);
274
259
  setState(completeSplitQuery(pageKey));
275
260
  }
276
261
  } else if (
@@ -279,12 +264,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
279
264
  currResult.pageStatus === "SplitRequired" ||
280
265
  currResult.page.length > options.initialNumItems * 2)
281
266
  ) {
282
- console.log(
283
- "splitQuery",
284
- pageKey,
285
- currResult.pageStatus,
286
- currResult.page.length
287
- );
288
267
  // If a single page has more than double the expected number of items,
289
268
  // or if the server requests a split, split the page into two.
290
269
  setState(
@@ -321,7 +300,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
321
300
  },
322
301
  } as const;
323
302
  } else {
324
- console.log("LoadingMore", maybeLastResult);
325
303
  return {
326
304
  status: "LoadingMore",
327
305
  isLoading: true,
@@ -332,7 +310,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
332
310
  }
333
311
  }
334
312
  if (maybeLastResult.isDone) {
335
- console.log("Exhausted", maybeLastResult);
336
313
  return {
337
314
  status: "Exhausted",
338
315
  isLoading: false,
@@ -356,14 +333,6 @@ export function usePaginatedQuery<Query extends PaginatedQueryReference>(
356
333
  const nextPageKey = prevState.nextPageKey + 2;
357
334
  const pageKeys = prevState.pageKeys; //[...prevState.pageKeys, prevState.nextPageKey];
358
335
  const queries = { ...prevState.queries };
359
- console.log(
360
- "loading more",
361
- lastPageKey,
362
- replaceKey,
363
- newKey,
364
- nextPageKey,
365
- pageKeys
366
- );
367
336
 
368
337
  queries[replaceKey] = {
369
338
  query: prevState.query,
package/src/validators.ts CHANGED
@@ -4,6 +4,7 @@ import {
4
4
  type ObjectType,
5
5
  type Validator,
6
6
  type Value,
7
+ type VObject,
7
8
  } from "convex/values";
8
9
  import { vVectorDimension } from "./component/vector/tables.js";
9
10
 
@@ -59,18 +60,6 @@ export const vFilePart = v.object({
59
60
  providerOptions,
60
61
  });
61
62
 
62
- export const vFile = v.object({
63
- data: v.optional(v.union(v.bytes(), v.string())),
64
- url: v.optional(v.string()),
65
- mimeType: v.string(),
66
- fileId: v.optional(v.id("files")),
67
- });
68
-
69
- export const vFileWithStringId = v.object({
70
- ...vFile.fields,
71
- fileId: v.optional(v.string()),
72
- });
73
-
74
63
  export const vUserContent = v.union(
75
64
  v.string(),
76
65
  v.array(v.union(vTextPart, vImagePart, vFilePart))
@@ -260,11 +249,11 @@ export const vLanguageModelV1CallWarning = v.union(
260
249
  })
261
250
  );
262
251
 
263
- export const vMessageWithMetadata = v.object({
252
+ export const vMessageWithMetadataInternal = v.object({
264
253
  id: v.optional(v.string()), // external id, e.g. from Vercel AI SDK
265
254
  message: vMessage,
266
255
  text: v.optional(v.string()),
267
- files: v.optional(v.array(vFile)),
256
+ fileIds: v.optional(v.array(v.id("files"))),
268
257
  // metadata
269
258
  finishReason: v.optional(vFinishReason),
270
259
  model: v.optional(v.string()),
@@ -277,6 +266,10 @@ export const vMessageWithMetadata = v.object({
277
266
  warnings: v.optional(v.array(vLanguageModelV1CallWarning)),
278
267
  error: v.optional(v.string()),
279
268
  });
269
+ export const vMessageWithMetadata = v.object({
270
+ ...vMessageWithMetadataInternal.fields,
271
+ fileIds: v.optional(v.array(v.string())),
272
+ });
280
273
  export type MessageWithMetadata = Infer<typeof vMessageWithMetadata>;
281
274
 
282
275
  export const vMessageEmbeddings = v.object({
@@ -285,37 +278,6 @@ export const vMessageEmbeddings = v.object({
285
278
  vectors: v.array(v.union(v.array(v.number()), v.null())),
286
279
  });
287
280
 
288
- export const vStep = v.object({
289
- files: v.optional(v.array(v.any())),
290
- finishReason: vFinishReason,
291
- isContinued: v.boolean(),
292
- logprobs: v.optional(v.any()),
293
- providerMetadata,
294
- experimental_providerMetadata: providerMetadata,
295
- reasoning: v.optional(v.string()),
296
- reasoningDetails: v.optional(vReasoningDetails),
297
- request: v.optional(vRequest),
298
- response: v.optional(vResponse),
299
- sources: v.optional(v.array(vSource)),
300
- stepType: v.union(
301
- v.literal("initial"),
302
- v.literal("continue"),
303
- v.literal("tool-result")
304
- ),
305
- text: v.string(),
306
- toolCalls: v.array(vToolCallPart),
307
- toolResults: v.array(vToolResultPart),
308
- usage: v.optional(vUsage),
309
- warnings: v.optional(v.array(vLanguageModelV1CallWarning)),
310
- });
311
- export type Step = Infer<typeof vStep>;
312
-
313
- export const vStepWithMessages = v.object({
314
- step: vStep,
315
- messages: v.array(vMessageWithMetadata),
316
- embeddings: v.optional(vMessageEmbeddings),
317
- });
318
- export type StepWithMessagesWithMetadata = Infer<typeof vStepWithMessages>;
319
281
 
320
282
  export const vObjectResult = v.object({
321
283
  request: vRequest,
@@ -353,10 +315,34 @@ export const vContextOptions = v.object({
353
315
  });
354
316
 
355
317
  export const vStorageOptions = v.object({
318
+ saveMessages: v.optional(
319
+ v.union(v.literal("all"), v.literal("none"), v.literal("promptAndOutput"))
320
+ ),
321
+ });
322
+
323
+ const vStorageOptionsIncludingDeprecated = v.object({
324
+ ...vStorageOptions.fields,
356
325
  saveAllInputMessages: v.optional(v.boolean()),
357
326
  saveAnyInputMessages: v.optional(v.boolean()),
358
327
  saveOutputMessages: v.optional(v.boolean()),
359
- });
328
+ }) as VObject<
329
+ {
330
+ saveMessages?: "all" | "none" | "promptAndOutput";
331
+ /**
332
+ * @deprecated Use saveMessages instead.
333
+ */
334
+ saveAllInputMessages?: boolean;
335
+ /**
336
+ * @deprecated Use saveMessages instead.
337
+ */
338
+ saveAnyInputMessages?: boolean;
339
+ /**
340
+ * @deprecated Use saveMessages instead.
341
+ */
342
+ saveOutputMessages?: boolean;
343
+ },
344
+ typeof vStorageOptions.fields
345
+ >;
360
346
 
361
347
  const vPromptFields = {
362
348
  system: v.optional(v.string()),
@@ -382,7 +368,7 @@ const vCommonArgs = {
382
368
  userId: v.optional(v.string()),
383
369
  threadId: v.optional(v.string()),
384
370
  contextOptions: v.optional(vContextOptions),
385
- storageOptions: v.optional(vStorageOptions),
371
+ storageOptions: v.optional(vStorageOptionsIncludingDeprecated),
386
372
  providerOptions,
387
373
  ...vCallSettingsFields,
388
374
  ...vPromptFields,