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