@convex-dev/agent 0.0.1 → 0.0.2

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 (55) hide show
  1. package/README.md +26 -0
  2. package/dist/commonjs/client/index.d.ts +788 -79
  3. package/dist/commonjs/client/index.d.ts.map +1 -1
  4. package/dist/commonjs/client/index.js +117 -154
  5. package/dist/commonjs/client/index.js.map +1 -1
  6. package/dist/commonjs/component/messages.d.ts +11 -3
  7. package/dist/commonjs/component/messages.d.ts.map +1 -1
  8. package/dist/commonjs/component/messages.js +2 -1
  9. package/dist/commonjs/component/messages.js.map +1 -1
  10. package/dist/commonjs/component/schema.d.ts +18 -12
  11. package/dist/commonjs/component/schema.d.ts.map +1 -1
  12. package/dist/commonjs/component/schema.js +1 -0
  13. package/dist/commonjs/component/schema.js.map +1 -1
  14. package/dist/commonjs/component/vector/index.d.ts.map +1 -1
  15. package/dist/commonjs/component/vector/index.js +1 -1
  16. package/dist/commonjs/component/vector/index.js.map +1 -1
  17. package/dist/commonjs/mapping.d.ts +3 -2
  18. package/dist/commonjs/mapping.d.ts.map +1 -1
  19. package/dist/commonjs/mapping.js +45 -13
  20. package/dist/commonjs/mapping.js.map +1 -1
  21. package/dist/commonjs/validators.d.ts +2736 -76
  22. package/dist/commonjs/validators.d.ts.map +1 -1
  23. package/dist/commonjs/validators.js +72 -7
  24. package/dist/commonjs/validators.js.map +1 -1
  25. package/dist/esm/client/index.d.ts +788 -79
  26. package/dist/esm/client/index.d.ts.map +1 -1
  27. package/dist/esm/client/index.js +117 -154
  28. package/dist/esm/client/index.js.map +1 -1
  29. package/dist/esm/component/messages.d.ts +11 -3
  30. package/dist/esm/component/messages.d.ts.map +1 -1
  31. package/dist/esm/component/messages.js +2 -1
  32. package/dist/esm/component/messages.js.map +1 -1
  33. package/dist/esm/component/schema.d.ts +18 -12
  34. package/dist/esm/component/schema.d.ts.map +1 -1
  35. package/dist/esm/component/schema.js +1 -0
  36. package/dist/esm/component/schema.js.map +1 -1
  37. package/dist/esm/component/vector/index.d.ts.map +1 -1
  38. package/dist/esm/component/vector/index.js +1 -1
  39. package/dist/esm/component/vector/index.js.map +1 -1
  40. package/dist/esm/mapping.d.ts +3 -2
  41. package/dist/esm/mapping.d.ts.map +1 -1
  42. package/dist/esm/mapping.js +45 -13
  43. package/dist/esm/mapping.js.map +1 -1
  44. package/dist/esm/validators.d.ts +2736 -76
  45. package/dist/esm/validators.d.ts.map +1 -1
  46. package/dist/esm/validators.js +72 -7
  47. package/dist/esm/validators.js.map +1 -1
  48. package/package.json +7 -7
  49. package/src/client/index.ts +269 -191
  50. package/src/component/_generated/api.d.ts +5 -0
  51. package/src/component/messages.ts +2 -1
  52. package/src/component/schema.ts +1 -0
  53. package/src/component/vector/index.ts +1 -7
  54. package/src/mapping.ts +60 -19
  55. package/src/validators.ts +102 -9
@@ -1,12 +1,13 @@
1
1
  import type { EmbeddingModelV1, LanguageModelV1 } from "@ai-sdk/provider";
2
- import type { CoreMessage, DeepPartial, GenerateObjectResult, GenerateTextResult, StepResult, StreamObjectResult, StreamTextResult, Tool, ToolChoice, ToolExecutionOptions, ToolSet } from "ai";
2
+ import type { CoreMessage, DeepPartial, GenerateObjectResult, GenerateTextResult, JSONValue, RepairTextFunction, StepResult, StreamObjectResult, StreamTextResult, TelemetrySettings, Tool, ToolChoice, ToolExecutionOptions, ToolSet, Message as UIMessage } from "ai";
3
3
  import { generateObject, generateText, streamObject, streamText } from "ai";
4
- import { api } from "../component/_generated/api";
5
- import { SearchOptions } from "../validators";
6
- import { RunActionCtx, RunMutationCtx, RunQueryCtx, UseApi } from "./types";
7
4
  import { ConvexToZod } from "convex-helpers/server/zod";
8
5
  import { Infer, Validator } from "convex/values";
6
+ import { z } from "zod";
7
+ import { api } from "../component/_generated/api";
9
8
  import { VectorDimension } from "../component/vector/tables";
9
+ import { CallSettings, ProviderMetadata, ProviderOptions, SearchOptions } from "../validators";
10
+ import { RunActionCtx, RunMutationCtx, RunQueryCtx, UseApi } from "./types";
10
11
  export type ContextOptions = {
11
12
  /**
12
13
  * Whether to include tool messages in the context.
@@ -64,7 +65,7 @@ export declare class Agent<AgentTools extends ToolSet> {
64
65
  component: UseApi<typeof api>;
65
66
  options: {
66
67
  name?: string;
67
- thread: LanguageModelV1;
68
+ chat: LanguageModelV1;
68
69
  textEmbedding?: EmbeddingModelV1<string>;
69
70
  instructions?: string;
70
71
  tools?: AgentTools;
@@ -73,7 +74,7 @@ export declare class Agent<AgentTools extends ToolSet> {
73
74
  };
74
75
  constructor(component: UseApi<typeof api>, options: {
75
76
  name?: string;
76
- thread: LanguageModelV1;
77
+ chat: LanguageModelV1;
77
78
  textEmbedding?: EmbeddingModelV1<string>;
78
79
  instructions?: string;
79
80
  tools?: AgentTools;
@@ -198,40 +199,52 @@ export declare class Agent<AgentTools extends ToolSet> {
198
199
  userId?: string;
199
200
  threadId?: string;
200
201
  }, args: TextArgs<AgentTools, TOOLS, Parameters<typeof streamText<TOOLS, OUTPUT, PARTIAL_OUTPUT>>[0]>): Promise<StreamTextResult<TOOLS, PARTIAL_OUTPUT> & GenerationOutputMetadata>;
202
+ saveMessagesAndFetchContext<T extends {
203
+ prompt?: string;
204
+ messages?: CoreMessage[] | Omit<UIMessage, "id">[];
205
+ system?: string;
206
+ }>(ctx: RunActionCtx | RunMutationCtx, { userId, threadId, parentMessageId, saveAllInputMessages, system, ...args }: {
207
+ userId: string | undefined;
208
+ threadId: string | undefined;
209
+ parentMessageId?: string;
210
+ saveAllInputMessages?: boolean;
211
+ saveAnyInputMessages?: boolean;
212
+ } & ContextOptions & T): Promise<{
213
+ args: T;
214
+ messageId: string | undefined;
215
+ }>;
201
216
  generateObject<T>(ctx: RunActionCtx, { userId, threadId }: {
202
217
  userId?: string;
203
218
  threadId?: string;
204
- }, args: Omit<Parameters<typeof generateObject>[0], "model"> & {
205
- model?: LanguageModelV1;
206
- } & {
207
- parentMessageId?: string;
208
- } & ContextOptions & StorageOptions): Promise<GenerateObjectResult<T> & GenerationOutputMetadata>;
219
+ }, args: OurObjectArgs<T>): Promise<GenerateObjectResult<T> & GenerationOutputMetadata>;
209
220
  streamObject<T>(ctx: RunMutationCtx, { userId, threadId }: {
210
221
  userId?: string;
211
222
  threadId?: string;
212
- }, args: Omit<Parameters<typeof streamObject<T>>[0], "model"> & {
213
- model?: LanguageModelV1;
214
- } & {
215
- parentMessageId?: string;
216
- } & ContextOptions & StorageOptions): Promise<StreamObjectResult<DeepPartial<T>, T, never> & GenerationOutputMetadata>;
223
+ }, args: OurStreamObjectArgs<T>): Promise<StreamObjectResult<DeepPartial<T>, T, never> & GenerationOutputMetadata>;
224
+ saveObject(ctx: RunMutationCtx, args: {
225
+ threadId: string;
226
+ messageId: string;
227
+ result: GenerateObjectResult<unknown>;
228
+ }): Promise<void>;
217
229
  mergedContextOptions(opts: ContextOptions): ContextOptions;
218
230
  searchOptionsWithDefaults(contextOptions: ContextOptions, messages: CoreMessage[]): Promise<SearchOptions>;
219
231
  /**
220
232
  *
221
233
  */
222
- asAction(spec: {
234
+ asAction(spec?: {
223
235
  contextOptions?: ContextOptions;
224
236
  maxSteps?: number;
225
237
  }): import("convex/server").RegisteredAction<"internal", {
226
238
  userId?: string | undefined;
227
239
  threadId?: string | undefined;
240
+ parentMessageId?: string | undefined;
241
+ maxRetries?: number | undefined;
228
242
  createThread?: {
229
243
  userId?: string | undefined;
230
244
  title?: string | undefined;
231
245
  summary?: string | undefined;
232
246
  parentThreadIds?: string[] | undefined;
233
247
  } | undefined;
234
- maxRetries?: number | undefined;
235
248
  contextOptions?: {
236
249
  includeToolCalls?: boolean | undefined;
237
250
  recentMessages?: number | undefined;
@@ -250,10 +263,6 @@ export declare class Agent<AgentTools extends ToolSet> {
250
263
  saveAllInputMessages?: boolean | undefined;
251
264
  saveAllOutputMessages?: boolean | undefined;
252
265
  } | undefined;
253
- continueThread?: {
254
- userId?: string | undefined;
255
- threadId: string;
256
- } | undefined;
257
266
  generateText?: {
258
267
  messages?: ({
259
268
  providerOptions?: Record<string, any> | undefined;
@@ -338,7 +347,24 @@ export declare class Agent<AgentTools extends ToolSet> {
338
347
  role: "system";
339
348
  content: string;
340
349
  })[] | undefined;
350
+ providerOptions?: Record<string, any> | undefined;
351
+ experimental_providerMetadata?: Record<string, any> | undefined;
352
+ system?: string | undefined;
353
+ headers?: Record<string, string> | undefined;
354
+ maxTokens?: number | undefined;
355
+ temperature?: number | undefined;
356
+ topP?: number | undefined;
357
+ topK?: number | undefined;
358
+ presencePenalty?: number | undefined;
359
+ frequencyPenalty?: number | undefined;
360
+ seed?: number | undefined;
361
+ maxRetries?: number | undefined;
362
+ toolChoice?: "required" | "auto" | "none" | {
363
+ type: "tool";
364
+ toolName: string;
365
+ } | undefined;
341
366
  maxSteps?: number | undefined;
367
+ experimental_continueSteps?: boolean | undefined;
342
368
  prompt?: string | undefined;
343
369
  } | undefined;
344
370
  streamText?: {
@@ -425,7 +451,24 @@ export declare class Agent<AgentTools extends ToolSet> {
425
451
  role: "system";
426
452
  content: string;
427
453
  })[] | undefined;
454
+ providerOptions?: Record<string, any> | undefined;
455
+ experimental_providerMetadata?: Record<string, any> | undefined;
456
+ system?: string | undefined;
457
+ headers?: Record<string, string> | undefined;
458
+ maxTokens?: number | undefined;
459
+ temperature?: number | undefined;
460
+ topP?: number | undefined;
461
+ topK?: number | undefined;
462
+ presencePenalty?: number | undefined;
463
+ frequencyPenalty?: number | undefined;
464
+ seed?: number | undefined;
465
+ maxRetries?: number | undefined;
466
+ toolChoice?: "required" | "auto" | "none" | {
467
+ type: "tool";
468
+ toolName: string;
469
+ } | undefined;
428
470
  maxSteps?: number | undefined;
471
+ experimental_continueSteps?: boolean | undefined;
429
472
  prompt?: string | undefined;
430
473
  } | undefined;
431
474
  generateObject?: {
@@ -512,11 +555,25 @@ export declare class Agent<AgentTools extends ToolSet> {
512
555
  role: "system";
513
556
  content: string;
514
557
  })[] | undefined;
558
+ providerOptions?: Record<string, any> | undefined;
559
+ experimental_providerMetadata?: Record<string, any> | undefined;
560
+ system?: string | undefined;
561
+ headers?: Record<string, string> | undefined;
562
+ maxTokens?: number | undefined;
563
+ temperature?: number | undefined;
564
+ topP?: number | undefined;
565
+ topK?: number | undefined;
566
+ presencePenalty?: number | undefined;
567
+ frequencyPenalty?: number | undefined;
568
+ seed?: number | undefined;
569
+ maxRetries?: number | undefined;
515
570
  prompt?: string | undefined;
516
- output?: any;
517
- mode?: "json" | undefined;
518
- } | undefined;
519
- streamObject?: {
571
+ output?: "object" | undefined;
572
+ schemaName?: string | undefined;
573
+ schemaDescription?: string | undefined;
574
+ mode?: "tool" | "auto" | "json" | undefined;
575
+ schema: any;
576
+ } | {
520
577
  messages?: ({
521
578
  providerOptions?: Record<string, any> | undefined;
522
579
  experimental_providerMetadata?: Record<string, any> | undefined;
@@ -600,65 +657,717 @@ export declare class Agent<AgentTools extends ToolSet> {
600
657
  role: "system";
601
658
  content: string;
602
659
  })[] | undefined;
660
+ providerOptions?: Record<string, any> | undefined;
661
+ experimental_providerMetadata?: Record<string, any> | undefined;
662
+ system?: string | undefined;
663
+ headers?: Record<string, string> | undefined;
664
+ maxTokens?: number | undefined;
665
+ temperature?: number | undefined;
666
+ topP?: number | undefined;
667
+ topK?: number | undefined;
668
+ presencePenalty?: number | undefined;
669
+ frequencyPenalty?: number | undefined;
670
+ seed?: number | undefined;
671
+ maxRetries?: number | undefined;
603
672
  prompt?: string | undefined;
604
- output?: any;
605
- mode?: "json" | undefined;
673
+ output?: "array" | undefined;
674
+ schemaName?: string | undefined;
675
+ schemaDescription?: string | undefined;
676
+ mode?: "tool" | "auto" | "json" | undefined;
606
677
  schema: any;
678
+ } | {
679
+ messages?: ({
680
+ providerOptions?: Record<string, any> | undefined;
681
+ experimental_providerMetadata?: Record<string, any> | undefined;
682
+ role: "user";
683
+ content: string | ({
684
+ providerOptions?: Record<string, any> | undefined;
685
+ experimental_providerMetadata?: Record<string, any> | undefined;
686
+ type: "text";
687
+ text: string;
688
+ } | {
689
+ providerOptions?: Record<string, any> | undefined;
690
+ experimental_providerMetadata?: Record<string, any> | undefined;
691
+ mimeType?: string | undefined;
692
+ type: "image";
693
+ image: string | ArrayBuffer;
694
+ } | {
695
+ providerOptions?: Record<string, any> | undefined;
696
+ experimental_providerMetadata?: Record<string, any> | undefined;
697
+ type: "file";
698
+ mimeType: string;
699
+ data: string | ArrayBuffer;
700
+ })[];
701
+ } | {
702
+ providerOptions?: Record<string, any> | undefined;
703
+ experimental_providerMetadata?: Record<string, any> | undefined;
704
+ role: "assistant";
705
+ content: string | ({
706
+ providerOptions?: Record<string, any> | undefined;
707
+ experimental_providerMetadata?: Record<string, any> | undefined;
708
+ type: "text";
709
+ text: string;
710
+ } | {
711
+ providerOptions?: Record<string, any> | undefined;
712
+ experimental_providerMetadata?: Record<string, any> | undefined;
713
+ type: "file";
714
+ mimeType: string;
715
+ data: string | ArrayBuffer;
716
+ } | {
717
+ providerOptions?: Record<string, any> | undefined;
718
+ experimental_providerMetadata?: Record<string, any> | undefined;
719
+ type: "reasoning";
720
+ text: string;
721
+ } | {
722
+ providerOptions?: Record<string, any> | undefined;
723
+ experimental_providerMetadata?: Record<string, any> | undefined;
724
+ type: "redacted-reasoning";
725
+ data: string;
726
+ } | {
727
+ providerOptions?: Record<string, any> | undefined;
728
+ experimental_providerMetadata?: Record<string, any> | undefined;
729
+ type: "tool-call";
730
+ toolCallId: string;
731
+ toolName: string;
732
+ args: any;
733
+ })[];
734
+ } | {
735
+ providerOptions?: Record<string, any> | undefined;
736
+ experimental_providerMetadata?: Record<string, any> | undefined;
737
+ role: "tool";
738
+ content: {
739
+ providerOptions?: Record<string, any> | undefined;
740
+ experimental_providerMetadata?: Record<string, any> | undefined;
741
+ args?: any;
742
+ experimental_content?: ({
743
+ type: "text";
744
+ text: string;
745
+ } | {
746
+ mimeType?: string | undefined;
747
+ type: "image";
748
+ data: string;
749
+ })[] | undefined;
750
+ isError?: boolean | undefined;
751
+ type: "tool-result";
752
+ toolCallId: string;
753
+ toolName: string;
754
+ result: any;
755
+ }[];
756
+ } | {
757
+ providerOptions?: Record<string, any> | undefined;
758
+ experimental_providerMetadata?: Record<string, any> | undefined;
759
+ role: "system";
760
+ content: string;
761
+ })[] | undefined;
762
+ providerOptions?: Record<string, any> | undefined;
763
+ experimental_providerMetadata?: Record<string, any> | undefined;
764
+ system?: string | undefined;
765
+ headers?: Record<string, string> | undefined;
766
+ maxTokens?: number | undefined;
767
+ temperature?: number | undefined;
768
+ topP?: number | undefined;
769
+ topK?: number | undefined;
770
+ presencePenalty?: number | undefined;
771
+ frequencyPenalty?: number | undefined;
772
+ seed?: number | undefined;
773
+ maxRetries?: number | undefined;
774
+ prompt?: string | undefined;
775
+ output?: "enum" | undefined;
776
+ mode?: "tool" | "auto" | "json" | undefined;
777
+ enum: string[];
778
+ } | {
779
+ messages?: ({
780
+ providerOptions?: Record<string, any> | undefined;
781
+ experimental_providerMetadata?: Record<string, any> | undefined;
782
+ role: "user";
783
+ content: string | ({
784
+ providerOptions?: Record<string, any> | undefined;
785
+ experimental_providerMetadata?: Record<string, any> | undefined;
786
+ type: "text";
787
+ text: string;
788
+ } | {
789
+ providerOptions?: Record<string, any> | undefined;
790
+ experimental_providerMetadata?: Record<string, any> | undefined;
791
+ mimeType?: string | undefined;
792
+ type: "image";
793
+ image: string | ArrayBuffer;
794
+ } | {
795
+ providerOptions?: Record<string, any> | undefined;
796
+ experimental_providerMetadata?: Record<string, any> | undefined;
797
+ type: "file";
798
+ mimeType: string;
799
+ data: string | ArrayBuffer;
800
+ })[];
801
+ } | {
802
+ providerOptions?: Record<string, any> | undefined;
803
+ experimental_providerMetadata?: Record<string, any> | undefined;
804
+ role: "assistant";
805
+ content: string | ({
806
+ providerOptions?: Record<string, any> | undefined;
807
+ experimental_providerMetadata?: Record<string, any> | undefined;
808
+ type: "text";
809
+ text: string;
810
+ } | {
811
+ providerOptions?: Record<string, any> | undefined;
812
+ experimental_providerMetadata?: Record<string, any> | undefined;
813
+ type: "file";
814
+ mimeType: string;
815
+ data: string | ArrayBuffer;
816
+ } | {
817
+ providerOptions?: Record<string, any> | undefined;
818
+ experimental_providerMetadata?: Record<string, any> | undefined;
819
+ type: "reasoning";
820
+ text: string;
821
+ } | {
822
+ providerOptions?: Record<string, any> | undefined;
823
+ experimental_providerMetadata?: Record<string, any> | undefined;
824
+ type: "redacted-reasoning";
825
+ data: string;
826
+ } | {
827
+ providerOptions?: Record<string, any> | undefined;
828
+ experimental_providerMetadata?: Record<string, any> | undefined;
829
+ type: "tool-call";
830
+ toolCallId: string;
831
+ toolName: string;
832
+ args: any;
833
+ })[];
834
+ } | {
835
+ providerOptions?: Record<string, any> | undefined;
836
+ experimental_providerMetadata?: Record<string, any> | undefined;
837
+ role: "tool";
838
+ content: {
839
+ providerOptions?: Record<string, any> | undefined;
840
+ experimental_providerMetadata?: Record<string, any> | undefined;
841
+ args?: any;
842
+ experimental_content?: ({
843
+ type: "text";
844
+ text: string;
845
+ } | {
846
+ mimeType?: string | undefined;
847
+ type: "image";
848
+ data: string;
849
+ })[] | undefined;
850
+ isError?: boolean | undefined;
851
+ type: "tool-result";
852
+ toolCallId: string;
853
+ toolName: string;
854
+ result: any;
855
+ }[];
856
+ } | {
857
+ providerOptions?: Record<string, any> | undefined;
858
+ experimental_providerMetadata?: Record<string, any> | undefined;
859
+ role: "system";
860
+ content: string;
861
+ })[] | undefined;
862
+ providerOptions?: Record<string, any> | undefined;
863
+ experimental_providerMetadata?: Record<string, any> | undefined;
864
+ system?: string | undefined;
865
+ headers?: Record<string, string> | undefined;
866
+ maxTokens?: number | undefined;
867
+ temperature?: number | undefined;
868
+ topP?: number | undefined;
869
+ topK?: number | undefined;
870
+ presencePenalty?: number | undefined;
871
+ frequencyPenalty?: number | undefined;
872
+ seed?: number | undefined;
873
+ maxRetries?: number | undefined;
874
+ prompt?: string | undefined;
875
+ mode?: "json" | undefined;
876
+ output: "no-schema";
607
877
  } | undefined;
608
- }, Promise<any>>;
609
- /**
610
- * Create a tool that can call this agent.
611
- * @param spec The specification for the arguments to this agent.
612
- * They will be encoded as JSON and passed to the agent.
613
- * @returns The agent as a tool that can be passed to other agents.
614
- */
615
- asTool(spec: {
616
- description: string;
617
- args: Validator<unknown, "required", string>;
618
- contextOptions?: ContextOptions;
619
- maxSteps?: number;
620
- }): Tool<ConvexToZod<Validator<unknown, "required", string>>, string>;
621
- }
622
- export type ToolCtx = RunActionCtx & {
623
- userId?: string;
624
- threadId?: string;
625
- messageId?: string;
626
- };
627
- /**
628
- * This is a wrapper around the ai.tool function that adds support for
629
- * userId and threadId to the tool, if they're called within a thread from an agent.
630
- * @param tool The AI tool. See https://sdk.vercel.ai/docs/ai-sdk-core/tools-and-tool-calling
631
- * @returns The same tool, but with userId and threadId args support added.
632
- */
633
- export declare function createTool<V extends Validator<any, any, any>, RESULT>(convexTool: {
634
- args: V;
635
- description?: string;
636
- handler: (ctx: ToolCtx, args: Infer<V>, options: ToolExecutionOptions) => PromiseLike<RESULT>;
637
- ctx?: ToolCtx;
638
- }): Tool<ConvexToZod<V>, RESULT>;
639
- type TextArgs<AgentTools extends ToolSet, TOOLS extends ToolSet, T extends {
640
- toolChoice?: ToolChoice<TOOLS & AgentTools>;
641
- tools?: TOOLS;
642
- model: LanguageModelV1;
643
- }> = Omit<T, "toolChoice" | "tools" | "model"> & {
644
- model?: LanguageModelV1;
645
- parentMessageId?: string;
646
- } & {
647
- tools?: TOOLS;
648
- toolChoice?: ToolChoice<{
649
- [key in keyof TOOLS | keyof AgentTools]: unknown;
650
- }>;
651
- } & ContextOptions & StorageOptions;
652
- type ObjectArgs<T extends {
653
- model: LanguageModelV1;
654
- }> = Omit<T, "model"> & {
655
- model?: LanguageModelV1;
656
- } & ContextOptions & StorageOptions;
878
+ streamObject?: {
879
+ messages?: ({
880
+ providerOptions?: Record<string, any> | undefined;
881
+ experimental_providerMetadata?: Record<string, any> | undefined;
882
+ role: "user";
883
+ content: string | ({
884
+ providerOptions?: Record<string, any> | undefined;
885
+ experimental_providerMetadata?: Record<string, any> | undefined;
886
+ type: "text";
887
+ text: string;
888
+ } | {
889
+ providerOptions?: Record<string, any> | undefined;
890
+ experimental_providerMetadata?: Record<string, any> | undefined;
891
+ mimeType?: string | undefined;
892
+ type: "image";
893
+ image: string | ArrayBuffer;
894
+ } | {
895
+ providerOptions?: Record<string, any> | undefined;
896
+ experimental_providerMetadata?: Record<string, any> | undefined;
897
+ type: "file";
898
+ mimeType: string;
899
+ data: string | ArrayBuffer;
900
+ })[];
901
+ } | {
902
+ providerOptions?: Record<string, any> | undefined;
903
+ experimental_providerMetadata?: Record<string, any> | undefined;
904
+ role: "assistant";
905
+ content: string | ({
906
+ providerOptions?: Record<string, any> | undefined;
907
+ experimental_providerMetadata?: Record<string, any> | undefined;
908
+ type: "text";
909
+ text: string;
910
+ } | {
911
+ providerOptions?: Record<string, any> | undefined;
912
+ experimental_providerMetadata?: Record<string, any> | undefined;
913
+ type: "file";
914
+ mimeType: string;
915
+ data: string | ArrayBuffer;
916
+ } | {
917
+ providerOptions?: Record<string, any> | undefined;
918
+ experimental_providerMetadata?: Record<string, any> | undefined;
919
+ type: "reasoning";
920
+ text: string;
921
+ } | {
922
+ providerOptions?: Record<string, any> | undefined;
923
+ experimental_providerMetadata?: Record<string, any> | undefined;
924
+ type: "redacted-reasoning";
925
+ data: string;
926
+ } | {
927
+ providerOptions?: Record<string, any> | undefined;
928
+ experimental_providerMetadata?: Record<string, any> | undefined;
929
+ type: "tool-call";
930
+ toolCallId: string;
931
+ toolName: string;
932
+ args: any;
933
+ })[];
934
+ } | {
935
+ providerOptions?: Record<string, any> | undefined;
936
+ experimental_providerMetadata?: Record<string, any> | undefined;
937
+ role: "tool";
938
+ content: {
939
+ providerOptions?: Record<string, any> | undefined;
940
+ experimental_providerMetadata?: Record<string, any> | undefined;
941
+ args?: any;
942
+ experimental_content?: ({
943
+ type: "text";
944
+ text: string;
945
+ } | {
946
+ mimeType?: string | undefined;
947
+ type: "image";
948
+ data: string;
949
+ })[] | undefined;
950
+ isError?: boolean | undefined;
951
+ type: "tool-result";
952
+ toolCallId: string;
953
+ toolName: string;
954
+ result: any;
955
+ }[];
956
+ } | {
957
+ providerOptions?: Record<string, any> | undefined;
958
+ experimental_providerMetadata?: Record<string, any> | undefined;
959
+ role: "system";
960
+ content: string;
961
+ })[] | undefined;
962
+ providerOptions?: Record<string, any> | undefined;
963
+ experimental_providerMetadata?: Record<string, any> | undefined;
964
+ system?: string | undefined;
965
+ headers?: Record<string, string> | undefined;
966
+ maxTokens?: number | undefined;
967
+ temperature?: number | undefined;
968
+ topP?: number | undefined;
969
+ topK?: number | undefined;
970
+ presencePenalty?: number | undefined;
971
+ frequencyPenalty?: number | undefined;
972
+ seed?: number | undefined;
973
+ maxRetries?: number | undefined;
974
+ prompt?: string | undefined;
975
+ output?: "object" | undefined;
976
+ schemaName?: string | undefined;
977
+ schemaDescription?: string | undefined;
978
+ mode?: "tool" | "auto" | "json" | undefined;
979
+ schema: any;
980
+ } | {
981
+ messages?: ({
982
+ providerOptions?: Record<string, any> | undefined;
983
+ experimental_providerMetadata?: Record<string, any> | undefined;
984
+ role: "user";
985
+ content: string | ({
986
+ providerOptions?: Record<string, any> | undefined;
987
+ experimental_providerMetadata?: Record<string, any> | undefined;
988
+ type: "text";
989
+ text: string;
990
+ } | {
991
+ providerOptions?: Record<string, any> | undefined;
992
+ experimental_providerMetadata?: Record<string, any> | undefined;
993
+ mimeType?: string | undefined;
994
+ type: "image";
995
+ image: string | ArrayBuffer;
996
+ } | {
997
+ providerOptions?: Record<string, any> | undefined;
998
+ experimental_providerMetadata?: Record<string, any> | undefined;
999
+ type: "file";
1000
+ mimeType: string;
1001
+ data: string | ArrayBuffer;
1002
+ })[];
1003
+ } | {
1004
+ providerOptions?: Record<string, any> | undefined;
1005
+ experimental_providerMetadata?: Record<string, any> | undefined;
1006
+ role: "assistant";
1007
+ content: string | ({
1008
+ providerOptions?: Record<string, any> | undefined;
1009
+ experimental_providerMetadata?: Record<string, any> | undefined;
1010
+ type: "text";
1011
+ text: string;
1012
+ } | {
1013
+ providerOptions?: Record<string, any> | undefined;
1014
+ experimental_providerMetadata?: Record<string, any> | undefined;
1015
+ type: "file";
1016
+ mimeType: string;
1017
+ data: string | ArrayBuffer;
1018
+ } | {
1019
+ providerOptions?: Record<string, any> | undefined;
1020
+ experimental_providerMetadata?: Record<string, any> | undefined;
1021
+ type: "reasoning";
1022
+ text: string;
1023
+ } | {
1024
+ providerOptions?: Record<string, any> | undefined;
1025
+ experimental_providerMetadata?: Record<string, any> | undefined;
1026
+ type: "redacted-reasoning";
1027
+ data: string;
1028
+ } | {
1029
+ providerOptions?: Record<string, any> | undefined;
1030
+ experimental_providerMetadata?: Record<string, any> | undefined;
1031
+ type: "tool-call";
1032
+ toolCallId: string;
1033
+ toolName: string;
1034
+ args: any;
1035
+ })[];
1036
+ } | {
1037
+ providerOptions?: Record<string, any> | undefined;
1038
+ experimental_providerMetadata?: Record<string, any> | undefined;
1039
+ role: "tool";
1040
+ content: {
1041
+ providerOptions?: Record<string, any> | undefined;
1042
+ experimental_providerMetadata?: Record<string, any> | undefined;
1043
+ args?: any;
1044
+ experimental_content?: ({
1045
+ type: "text";
1046
+ text: string;
1047
+ } | {
1048
+ mimeType?: string | undefined;
1049
+ type: "image";
1050
+ data: string;
1051
+ })[] | undefined;
1052
+ isError?: boolean | undefined;
1053
+ type: "tool-result";
1054
+ toolCallId: string;
1055
+ toolName: string;
1056
+ result: any;
1057
+ }[];
1058
+ } | {
1059
+ providerOptions?: Record<string, any> | undefined;
1060
+ experimental_providerMetadata?: Record<string, any> | undefined;
1061
+ role: "system";
1062
+ content: string;
1063
+ })[] | undefined;
1064
+ providerOptions?: Record<string, any> | undefined;
1065
+ experimental_providerMetadata?: Record<string, any> | undefined;
1066
+ system?: string | undefined;
1067
+ headers?: Record<string, string> | undefined;
1068
+ maxTokens?: number | undefined;
1069
+ temperature?: number | undefined;
1070
+ topP?: number | undefined;
1071
+ topK?: number | undefined;
1072
+ presencePenalty?: number | undefined;
1073
+ frequencyPenalty?: number | undefined;
1074
+ seed?: number | undefined;
1075
+ maxRetries?: number | undefined;
1076
+ prompt?: string | undefined;
1077
+ output?: "array" | undefined;
1078
+ schemaName?: string | undefined;
1079
+ schemaDescription?: string | undefined;
1080
+ mode?: "tool" | "auto" | "json" | undefined;
1081
+ schema: any;
1082
+ } | {
1083
+ messages?: ({
1084
+ providerOptions?: Record<string, any> | undefined;
1085
+ experimental_providerMetadata?: Record<string, any> | undefined;
1086
+ role: "user";
1087
+ content: string | ({
1088
+ providerOptions?: Record<string, any> | undefined;
1089
+ experimental_providerMetadata?: Record<string, any> | undefined;
1090
+ type: "text";
1091
+ text: string;
1092
+ } | {
1093
+ providerOptions?: Record<string, any> | undefined;
1094
+ experimental_providerMetadata?: Record<string, any> | undefined;
1095
+ mimeType?: string | undefined;
1096
+ type: "image";
1097
+ image: string | ArrayBuffer;
1098
+ } | {
1099
+ providerOptions?: Record<string, any> | undefined;
1100
+ experimental_providerMetadata?: Record<string, any> | undefined;
1101
+ type: "file";
1102
+ mimeType: string;
1103
+ data: string | ArrayBuffer;
1104
+ })[];
1105
+ } | {
1106
+ providerOptions?: Record<string, any> | undefined;
1107
+ experimental_providerMetadata?: Record<string, any> | undefined;
1108
+ role: "assistant";
1109
+ content: string | ({
1110
+ providerOptions?: Record<string, any> | undefined;
1111
+ experimental_providerMetadata?: Record<string, any> | undefined;
1112
+ type: "text";
1113
+ text: string;
1114
+ } | {
1115
+ providerOptions?: Record<string, any> | undefined;
1116
+ experimental_providerMetadata?: Record<string, any> | undefined;
1117
+ type: "file";
1118
+ mimeType: string;
1119
+ data: string | ArrayBuffer;
1120
+ } | {
1121
+ providerOptions?: Record<string, any> | undefined;
1122
+ experimental_providerMetadata?: Record<string, any> | undefined;
1123
+ type: "reasoning";
1124
+ text: string;
1125
+ } | {
1126
+ providerOptions?: Record<string, any> | undefined;
1127
+ experimental_providerMetadata?: Record<string, any> | undefined;
1128
+ type: "redacted-reasoning";
1129
+ data: string;
1130
+ } | {
1131
+ providerOptions?: Record<string, any> | undefined;
1132
+ experimental_providerMetadata?: Record<string, any> | undefined;
1133
+ type: "tool-call";
1134
+ toolCallId: string;
1135
+ toolName: string;
1136
+ args: any;
1137
+ })[];
1138
+ } | {
1139
+ providerOptions?: Record<string, any> | undefined;
1140
+ experimental_providerMetadata?: Record<string, any> | undefined;
1141
+ role: "tool";
1142
+ content: {
1143
+ providerOptions?: Record<string, any> | undefined;
1144
+ experimental_providerMetadata?: Record<string, any> | undefined;
1145
+ args?: any;
1146
+ experimental_content?: ({
1147
+ type: "text";
1148
+ text: string;
1149
+ } | {
1150
+ mimeType?: string | undefined;
1151
+ type: "image";
1152
+ data: string;
1153
+ })[] | undefined;
1154
+ isError?: boolean | undefined;
1155
+ type: "tool-result";
1156
+ toolCallId: string;
1157
+ toolName: string;
1158
+ result: any;
1159
+ }[];
1160
+ } | {
1161
+ providerOptions?: Record<string, any> | undefined;
1162
+ experimental_providerMetadata?: Record<string, any> | undefined;
1163
+ role: "system";
1164
+ content: string;
1165
+ })[] | undefined;
1166
+ providerOptions?: Record<string, any> | undefined;
1167
+ experimental_providerMetadata?: Record<string, any> | undefined;
1168
+ system?: string | undefined;
1169
+ headers?: Record<string, string> | undefined;
1170
+ maxTokens?: number | undefined;
1171
+ temperature?: number | undefined;
1172
+ topP?: number | undefined;
1173
+ topK?: number | undefined;
1174
+ presencePenalty?: number | undefined;
1175
+ frequencyPenalty?: number | undefined;
1176
+ seed?: number | undefined;
1177
+ maxRetries?: number | undefined;
1178
+ prompt?: string | undefined;
1179
+ output?: "enum" | undefined;
1180
+ mode?: "tool" | "auto" | "json" | undefined;
1181
+ enum: string[];
1182
+ } | {
1183
+ messages?: ({
1184
+ providerOptions?: Record<string, any> | undefined;
1185
+ experimental_providerMetadata?: Record<string, any> | undefined;
1186
+ role: "user";
1187
+ content: string | ({
1188
+ providerOptions?: Record<string, any> | undefined;
1189
+ experimental_providerMetadata?: Record<string, any> | undefined;
1190
+ type: "text";
1191
+ text: string;
1192
+ } | {
1193
+ providerOptions?: Record<string, any> | undefined;
1194
+ experimental_providerMetadata?: Record<string, any> | undefined;
1195
+ mimeType?: string | undefined;
1196
+ type: "image";
1197
+ image: string | ArrayBuffer;
1198
+ } | {
1199
+ providerOptions?: Record<string, any> | undefined;
1200
+ experimental_providerMetadata?: Record<string, any> | undefined;
1201
+ type: "file";
1202
+ mimeType: string;
1203
+ data: string | ArrayBuffer;
1204
+ })[];
1205
+ } | {
1206
+ providerOptions?: Record<string, any> | undefined;
1207
+ experimental_providerMetadata?: Record<string, any> | undefined;
1208
+ role: "assistant";
1209
+ content: string | ({
1210
+ providerOptions?: Record<string, any> | undefined;
1211
+ experimental_providerMetadata?: Record<string, any> | undefined;
1212
+ type: "text";
1213
+ text: string;
1214
+ } | {
1215
+ providerOptions?: Record<string, any> | undefined;
1216
+ experimental_providerMetadata?: Record<string, any> | undefined;
1217
+ type: "file";
1218
+ mimeType: string;
1219
+ data: string | ArrayBuffer;
1220
+ } | {
1221
+ providerOptions?: Record<string, any> | undefined;
1222
+ experimental_providerMetadata?: Record<string, any> | undefined;
1223
+ type: "reasoning";
1224
+ text: string;
1225
+ } | {
1226
+ providerOptions?: Record<string, any> | undefined;
1227
+ experimental_providerMetadata?: Record<string, any> | undefined;
1228
+ type: "redacted-reasoning";
1229
+ data: string;
1230
+ } | {
1231
+ providerOptions?: Record<string, any> | undefined;
1232
+ experimental_providerMetadata?: Record<string, any> | undefined;
1233
+ type: "tool-call";
1234
+ toolCallId: string;
1235
+ toolName: string;
1236
+ args: any;
1237
+ })[];
1238
+ } | {
1239
+ providerOptions?: Record<string, any> | undefined;
1240
+ experimental_providerMetadata?: Record<string, any> | undefined;
1241
+ role: "tool";
1242
+ content: {
1243
+ providerOptions?: Record<string, any> | undefined;
1244
+ experimental_providerMetadata?: Record<string, any> | undefined;
1245
+ args?: any;
1246
+ experimental_content?: ({
1247
+ type: "text";
1248
+ text: string;
1249
+ } | {
1250
+ mimeType?: string | undefined;
1251
+ type: "image";
1252
+ data: string;
1253
+ })[] | undefined;
1254
+ isError?: boolean | undefined;
1255
+ type: "tool-result";
1256
+ toolCallId: string;
1257
+ toolName: string;
1258
+ result: any;
1259
+ }[];
1260
+ } | {
1261
+ providerOptions?: Record<string, any> | undefined;
1262
+ experimental_providerMetadata?: Record<string, any> | undefined;
1263
+ role: "system";
1264
+ content: string;
1265
+ })[] | undefined;
1266
+ providerOptions?: Record<string, any> | undefined;
1267
+ experimental_providerMetadata?: Record<string, any> | undefined;
1268
+ system?: string | undefined;
1269
+ headers?: Record<string, string> | undefined;
1270
+ maxTokens?: number | undefined;
1271
+ temperature?: number | undefined;
1272
+ topP?: number | undefined;
1273
+ topK?: number | undefined;
1274
+ presencePenalty?: number | undefined;
1275
+ frequencyPenalty?: number | undefined;
1276
+ seed?: number | undefined;
1277
+ maxRetries?: number | undefined;
1278
+ prompt?: string | undefined;
1279
+ mode?: "json" | undefined;
1280
+ output: "no-schema";
1281
+ } | undefined;
1282
+ }, Promise<any>>;
1283
+ /**
1284
+ * Create a tool that can call this agent.
1285
+ * @param spec The specification for the arguments to this agent.
1286
+ * They will be encoded as JSON and passed to the agent.
1287
+ * @returns The agent as a tool that can be passed to other agents.
1288
+ */
1289
+ asTool(spec: {
1290
+ description: string;
1291
+ args: Validator<unknown, "required", string>;
1292
+ contextOptions?: ContextOptions;
1293
+ maxSteps?: number;
1294
+ }): Tool<ConvexToZod<Validator<unknown, "required", string>>, string>;
1295
+ }
1296
+ export type ToolCtx = RunActionCtx & {
1297
+ userId?: string;
1298
+ threadId?: string;
1299
+ messageId?: string;
1300
+ };
1301
+ /**
1302
+ * This is a wrapper around the ai.tool function that adds support for
1303
+ * userId and threadId to the tool, if they're called within a thread from an agent.
1304
+ * @param tool The AI tool. See https://sdk.vercel.ai/docs/ai-sdk-core/tools-and-tool-calling
1305
+ * @returns The same tool, but with userId and threadId args support added.
1306
+ */
1307
+ export declare function createTool<V extends Validator<any, any, any>, RESULT>(convexTool: {
1308
+ args: V;
1309
+ description?: string;
1310
+ handler: (ctx: ToolCtx, args: Infer<V>, options: ToolExecutionOptions) => PromiseLike<RESULT>;
1311
+ ctx?: ToolCtx;
1312
+ }): Tool<ConvexToZod<V>, RESULT>;
1313
+ type TextArgs<AgentTools extends ToolSet, TOOLS extends ToolSet, T extends {
1314
+ toolChoice?: ToolChoice<TOOLS & AgentTools>;
1315
+ tools?: TOOLS;
1316
+ model: LanguageModelV1;
1317
+ }> = Omit<T, "toolChoice" | "tools" | "model"> & {
1318
+ model?: LanguageModelV1;
1319
+ parentMessageId?: string;
1320
+ } & {
1321
+ tools?: TOOLS;
1322
+ toolChoice?: ToolChoice<{
1323
+ [key in keyof TOOLS | keyof AgentTools]: unknown;
1324
+ }>;
1325
+ } & ContextOptions & StorageOptions;
1326
+ type BaseGenerateObjectOptions = StorageOptions & ContextOptions & CallSettings & {
1327
+ model?: LanguageModelV1;
1328
+ parentMessageId?: string;
1329
+ system?: string;
1330
+ prompt?: string;
1331
+ messages?: CoreMessage[];
1332
+ experimental_repairText?: RepairTextFunction;
1333
+ experimental_telemetry?: TelemetrySettings;
1334
+ providerOptions?: ProviderOptions;
1335
+ experimental_providerMetadata?: ProviderMetadata;
1336
+ };
1337
+ type GenerateObjectObjectOptions<T extends Record<string, unknown>> = BaseGenerateObjectOptions & {
1338
+ output: "object";
1339
+ mode?: "auto" | "json" | "tool";
1340
+ schema: z.Schema<T>;
1341
+ schemaName?: string;
1342
+ schemaDescription?: string;
1343
+ };
1344
+ type GenerateObjectArrayOptions<T> = BaseGenerateObjectOptions & {
1345
+ output: "array";
1346
+ mode?: "auto" | "json" | "tool";
1347
+ schema: z.Schema<T>;
1348
+ schemaName?: string;
1349
+ schemaDescription?: string;
1350
+ };
1351
+ type GenerateObjectWithEnumOptions<T extends string> = BaseGenerateObjectOptions & {
1352
+ output: "enum";
1353
+ enum: Array<T>;
1354
+ mode?: "auto" | "json" | "tool";
1355
+ };
1356
+ type GenerateObjectNoSchemaOptions = BaseGenerateObjectOptions & {
1357
+ schema?: undefined;
1358
+ mode?: "json";
1359
+ };
1360
+ type GenerateObjectArgs<T> = T extends Record<string, unknown> ? GenerateObjectObjectOptions<T> : T extends Array<unknown> ? GenerateObjectArrayOptions<T> : T extends string ? GenerateObjectWithEnumOptions<T> : GenerateObjectNoSchemaOptions;
1361
+ type StreamObjectArgs<T> = T extends Record<string, unknown> ? GenerateObjectObjectOptions<T> : T extends Array<unknown> ? GenerateObjectArrayOptions<T> : GenerateObjectNoSchemaOptions;
1362
+ type OurObjectArgs<T> = GenerateObjectArgs<T> & Pick<Parameters<typeof generateObject<any>>[0], "experimental_repairText" | "abortSignal">;
1363
+ type OurStreamObjectArgs<T> = StreamObjectArgs<T> & Pick<Parameters<typeof streamObject<T>>[0], "onError" | "onFinish" | "abortSignal">;
657
1364
  interface Thread<AgentTools extends ToolSet> {
1365
+ threadId: string;
658
1366
  generateText<TOOLS extends ToolSet, OUTPUT = never, OUTPUT_PARTIAL = never>(args: TextArgs<AgentTools, TOOLS, Parameters<typeof generateText<TOOLS, OUTPUT, OUTPUT_PARTIAL>>[0]>): Promise<GenerateTextResult<TOOLS & AgentTools, OUTPUT> & GenerationOutputMetadata>;
659
1367
  streamText<TOOLS extends ToolSet, OUTPUT = never, PARTIAL_OUTPUT = never>(args: TextArgs<AgentTools, TOOLS, Parameters<typeof streamText<TOOLS, OUTPUT, PARTIAL_OUTPUT>>[0]>): Promise<StreamTextResult<TOOLS & AgentTools, PARTIAL_OUTPUT> & GenerationOutputMetadata>;
660
- generateObject<T>(args: ObjectArgs<Parameters<typeof generateObject>[0]>): Promise<GenerateObjectResult<T> & GenerationOutputMetadata>;
661
- streamObject<T>(args: ObjectArgs<Parameters<typeof streamObject<T>>[0]>): Promise<StreamObjectResult<DeepPartial<T>, T, never> & GenerationOutputMetadata>;
1368
+ generateObject<T>(args: OurObjectArgs<T>): Promise<GenerateObjectResult<T> & GenerationOutputMetadata>;
1369
+ generateObject(args: GenerateObjectNoSchemaOptions): Promise<GenerateObjectResult<JSONValue> & GenerationOutputMetadata>;
1370
+ streamObject<T>(args: OurStreamObjectArgs<T>): Promise<StreamObjectResult<DeepPartial<T>, T, never> & GenerationOutputMetadata>;
662
1371
  }
663
1372
  export {};
664
1373
  //# sourceMappingURL=index.d.ts.map