@o-zakstam/voltagent-convex 1.1.2 → 1.1.4

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 (95) hide show
  1. package/dist/client/{index.d.cts → defineVoltAgentAPI.d.ts} +59 -92
  2. package/dist/client/defineVoltAgentAPI.d.ts.map +1 -0
  3. package/dist/client/defineVoltAgentAPI.js +318 -0
  4. package/dist/client/defineVoltAgentAPI.js.map +1 -0
  5. package/dist/client/index.d.ts +6 -221
  6. package/dist/client/index.d.ts.map +1 -0
  7. package/dist/client/index.js +8 -285
  8. package/dist/client/index.js.map +1 -1
  9. package/dist/client/types.d.ts +13 -0
  10. package/dist/client/types.d.ts.map +1 -0
  11. package/dist/client/types.js +8 -0
  12. package/dist/client/types.js.map +1 -0
  13. package/dist/component/_generated/api.d.ts +44 -0
  14. package/dist/component/_generated/api.d.ts.map +1 -0
  15. package/dist/component/_generated/api.js +31 -0
  16. package/dist/component/_generated/api.js.map +1 -0
  17. package/dist/component/_generated/component.d.ts +352 -0
  18. package/dist/component/_generated/component.d.ts.map +1 -0
  19. package/dist/component/_generated/component.js +11 -0
  20. package/dist/component/_generated/component.js.map +1 -0
  21. package/dist/component/_generated/dataModel.d.ts +46 -0
  22. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  23. package/dist/component/_generated/dataModel.js +11 -0
  24. package/dist/component/_generated/dataModel.js.map +1 -0
  25. package/dist/component/_generated/server.d.ts +121 -0
  26. package/dist/component/_generated/server.d.ts.map +1 -0
  27. package/dist/component/_generated/server.js +78 -0
  28. package/dist/component/_generated/server.js.map +1 -0
  29. package/dist/component/conversations.d.ts +108 -0
  30. package/dist/component/conversations.d.ts.map +1 -0
  31. package/dist/component/conversations.js +278 -0
  32. package/dist/component/conversations.js.map +1 -0
  33. package/dist/component/convex.config.d.ts +13 -0
  34. package/dist/component/convex.config.d.ts.map +1 -0
  35. package/dist/component/convex.config.js +21 -0
  36. package/dist/component/convex.config.js.map +1 -0
  37. package/dist/component/messages.d.ts +235 -0
  38. package/dist/component/messages.d.ts.map +1 -0
  39. package/dist/component/messages.js +186 -0
  40. package/dist/component/messages.js.map +1 -0
  41. package/dist/component/schema.d.ts +535 -0
  42. package/dist/component/schema.d.ts.map +1 -0
  43. package/dist/component/schema.js +113 -0
  44. package/dist/component/schema.js.map +1 -0
  45. package/dist/component/steps.d.ts +65 -0
  46. package/dist/component/steps.d.ts.map +1 -0
  47. package/dist/component/steps.js +120 -0
  48. package/dist/component/steps.js.map +1 -0
  49. package/dist/component/validators.d.ts +633 -0
  50. package/dist/component/validators.d.ts.map +1 -0
  51. package/dist/component/validators.js +124 -0
  52. package/dist/component/validators.js.map +1 -0
  53. package/dist/component/workflows.d.ts +234 -0
  54. package/dist/component/workflows.d.ts.map +1 -0
  55. package/dist/component/workflows.js +229 -0
  56. package/dist/component/workflows.js.map +1 -0
  57. package/dist/component/workingMemory.d.ts +30 -0
  58. package/dist/component/workingMemory.d.ts.map +1 -0
  59. package/dist/component/workingMemory.js +131 -0
  60. package/dist/component/workingMemory.js.map +1 -0
  61. package/dist/index.d.ts +7 -318
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +10 -434
  64. package/dist/index.js.map +1 -1
  65. package/dist/memory-adapter.d.ts +153 -0
  66. package/dist/memory-adapter.d.ts.map +1 -0
  67. package/dist/memory-adapter.js +462 -0
  68. package/dist/memory-adapter.js.map +1 -0
  69. package/dist/types.d.ts +167 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +5 -0
  72. package/dist/types.js.map +1 -0
  73. package/package.json +25 -26
  74. package/src/client/defineVoltAgentAPI.ts +365 -0
  75. package/src/client/index.ts +8 -0
  76. package/src/client/types.ts +14 -0
  77. package/src/component/_generated/api.ts +60 -0
  78. package/src/component/_generated/component.ts +466 -0
  79. package/src/component/_generated/dataModel.ts +60 -0
  80. package/src/component/_generated/server.ts +156 -0
  81. package/src/index.ts +24 -0
  82. package/{dist/index.cjs → src/memory-adapter.ts} +345 -106
  83. package/src/types.ts +178 -0
  84. package/dist/client/index.cjs +0 -288
  85. package/dist/client/index.cjs.map +0 -1
  86. package/dist/index.cjs.map +0 -1
  87. package/dist/index.d.cts +0 -322
  88. /package/{convex → src/component}/conversations.ts +0 -0
  89. /package/{convex → src/component}/convex.config.ts +0 -0
  90. /package/{convex → src/component}/messages.ts +0 -0
  91. /package/{convex → src/component}/schema.ts +0 -0
  92. /package/{convex → src/component}/steps.ts +0 -0
  93. /package/{convex → src/component}/validators.ts +0 -0
  94. /package/{convex → src/component}/workflows.ts +0 -0
  95. /package/{convex → src/component}/workingMemory.ts +0 -0
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Add a single message to a conversation
3
+ */
4
+ export declare const add: import("convex/server").RegisteredMutation<"public", {
5
+ metadata?: Record<string, any> | undefined;
6
+ id: string;
7
+ userId: string;
8
+ parts: ({
9
+ providerOptions?: Record<string, Record<string, any>> | undefined;
10
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
11
+ text: string;
12
+ type: "text";
13
+ } | {
14
+ providerOptions?: Record<string, Record<string, any>> | undefined;
15
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
16
+ mimeType?: string | undefined;
17
+ type: "image";
18
+ image: string;
19
+ } | {
20
+ providerOptions?: Record<string, Record<string, any>> | undefined;
21
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
22
+ filename?: string | undefined;
23
+ data: string;
24
+ type: "file";
25
+ mimeType: string;
26
+ } | {
27
+ providerExecuted?: boolean | undefined;
28
+ state?: "partial-call" | "call" | undefined;
29
+ providerOptions?: Record<string, Record<string, any>> | undefined;
30
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
31
+ toolCallId: string;
32
+ type: "tool-call";
33
+ args: Record<string, any>;
34
+ toolName: string;
35
+ } | {
36
+ providerExecuted?: boolean | undefined;
37
+ providerOptions?: Record<string, Record<string, any>> | undefined;
38
+ result?: any;
39
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
40
+ isError?: boolean | undefined;
41
+ toolCallId: string;
42
+ type: "tool-result";
43
+ toolName: string;
44
+ } | {
45
+ providerOptions?: Record<string, Record<string, any>> | undefined;
46
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
47
+ signature?: string | undefined;
48
+ text: string;
49
+ type: "reasoning";
50
+ } | {
51
+ providerOptions?: Record<string, Record<string, any>> | undefined;
52
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
53
+ data: string;
54
+ type: "redacted-reasoning";
55
+ } | {
56
+ title?: string | undefined;
57
+ providerOptions?: Record<string, Record<string, any>> | undefined;
58
+ url?: string | undefined;
59
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
60
+ filename?: string | undefined;
61
+ mediaType?: string | undefined;
62
+ id: string;
63
+ type: "source";
64
+ sourceType: "url" | "document";
65
+ })[];
66
+ conversationId: string;
67
+ role: string;
68
+ }, Promise<{
69
+ id: string;
70
+ updated: boolean;
71
+ created?: undefined;
72
+ } | {
73
+ id: string;
74
+ created: boolean;
75
+ updated?: undefined;
76
+ }>>;
77
+ /**
78
+ * Add multiple messages to a conversation
79
+ */
80
+ export declare const addMany: import("convex/server").RegisteredMutation<"public", {
81
+ messages: {
82
+ metadata?: Record<string, any> | undefined;
83
+ id: string;
84
+ userId: string;
85
+ parts: ({
86
+ providerOptions?: Record<string, Record<string, any>> | undefined;
87
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
88
+ text: string;
89
+ type: "text";
90
+ } | {
91
+ providerOptions?: Record<string, Record<string, any>> | undefined;
92
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
93
+ mimeType?: string | undefined;
94
+ type: "image";
95
+ image: string;
96
+ } | {
97
+ providerOptions?: Record<string, Record<string, any>> | undefined;
98
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
99
+ filename?: string | undefined;
100
+ data: string;
101
+ type: "file";
102
+ mimeType: string;
103
+ } | {
104
+ providerExecuted?: boolean | undefined;
105
+ state?: "partial-call" | "call" | undefined;
106
+ providerOptions?: Record<string, Record<string, any>> | undefined;
107
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
108
+ toolCallId: string;
109
+ type: "tool-call";
110
+ args: Record<string, any>;
111
+ toolName: string;
112
+ } | {
113
+ providerExecuted?: boolean | undefined;
114
+ providerOptions?: Record<string, Record<string, any>> | undefined;
115
+ result?: any;
116
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
117
+ isError?: boolean | undefined;
118
+ toolCallId: string;
119
+ type: "tool-result";
120
+ toolName: string;
121
+ } | {
122
+ providerOptions?: Record<string, Record<string, any>> | undefined;
123
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
124
+ signature?: string | undefined;
125
+ text: string;
126
+ type: "reasoning";
127
+ } | {
128
+ providerOptions?: Record<string, Record<string, any>> | undefined;
129
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
130
+ data: string;
131
+ type: "redacted-reasoning";
132
+ } | {
133
+ title?: string | undefined;
134
+ providerOptions?: Record<string, Record<string, any>> | undefined;
135
+ url?: string | undefined;
136
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
137
+ filename?: string | undefined;
138
+ mediaType?: string | undefined;
139
+ id: string;
140
+ type: "source";
141
+ sourceType: "url" | "document";
142
+ })[];
143
+ conversationId: string;
144
+ role: string;
145
+ }[];
146
+ }, Promise<{
147
+ id: string;
148
+ created?: boolean;
149
+ updated?: boolean;
150
+ }[]>>;
151
+ /**
152
+ * Get messages from a conversation with optional filtering
153
+ */
154
+ export declare const get: import("convex/server").RegisteredQuery<"public", {
155
+ limit?: number | undefined;
156
+ before?: string | undefined;
157
+ after?: string | undefined;
158
+ roles?: string[] | undefined;
159
+ userId: string;
160
+ conversationId: string;
161
+ }, Promise<{
162
+ id: string;
163
+ role: string;
164
+ parts: ({
165
+ providerOptions?: Record<string, Record<string, any>> | undefined;
166
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
167
+ text: string;
168
+ type: "text";
169
+ } | {
170
+ providerOptions?: Record<string, Record<string, any>> | undefined;
171
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
172
+ mimeType?: string | undefined;
173
+ type: "image";
174
+ image: string;
175
+ } | {
176
+ providerOptions?: Record<string, Record<string, any>> | undefined;
177
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
178
+ filename?: string | undefined;
179
+ data: string;
180
+ type: "file";
181
+ mimeType: string;
182
+ } | {
183
+ providerExecuted?: boolean | undefined;
184
+ state?: "partial-call" | "call" | undefined;
185
+ providerOptions?: Record<string, Record<string, any>> | undefined;
186
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
187
+ toolCallId: string;
188
+ type: "tool-call";
189
+ args: Record<string, any>;
190
+ toolName: string;
191
+ } | {
192
+ providerExecuted?: boolean | undefined;
193
+ providerOptions?: Record<string, Record<string, any>> | undefined;
194
+ result?: any;
195
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
196
+ isError?: boolean | undefined;
197
+ toolCallId: string;
198
+ type: "tool-result";
199
+ toolName: string;
200
+ } | {
201
+ providerOptions?: Record<string, Record<string, any>> | undefined;
202
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
203
+ signature?: string | undefined;
204
+ text: string;
205
+ type: "reasoning";
206
+ } | {
207
+ providerOptions?: Record<string, Record<string, any>> | undefined;
208
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
209
+ data: string;
210
+ type: "redacted-reasoning";
211
+ } | {
212
+ title?: string | undefined;
213
+ providerOptions?: Record<string, Record<string, any>> | undefined;
214
+ url?: string | undefined;
215
+ providerMetadata?: Record<string, Record<string, any>> | undefined;
216
+ filename?: string | undefined;
217
+ mediaType?: string | undefined;
218
+ id: string;
219
+ type: "source";
220
+ sourceType: "url" | "document";
221
+ })[];
222
+ metadata: {
223
+ createdAt: string;
224
+ };
225
+ }[]>>;
226
+ /**
227
+ * Clear messages for a user (optionally for a specific conversation)
228
+ */
229
+ export declare const clear: import("convex/server").RegisteredMutation<"public", {
230
+ conversationId?: string | undefined;
231
+ userId: string;
232
+ }, Promise<{
233
+ success: boolean;
234
+ }>>;
235
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/component/messages.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAeW,MAAM;cAAY,OAAO;cAAY,OAAO;KAgCzE,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8Cd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK;;;;;GA+DhB,CAAC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Message-related Convex functions
3
+ */
4
+ import { mutation, query } from "./_generated/server";
5
+ import { v } from "convex/values";
6
+ import { vMessageParts, vMetadata } from "./validators";
7
+ /**
8
+ * Add a single message to a conversation
9
+ */
10
+ export const add = mutation({
11
+ args: {
12
+ id: v.string(),
13
+ conversationId: v.string(),
14
+ userId: v.string(),
15
+ role: v.string(),
16
+ parts: vMessageParts,
17
+ metadata: v.optional(vMetadata),
18
+ },
19
+ handler: async (ctx, args) => {
20
+ const existing = await ctx.db
21
+ .query("messages")
22
+ .withIndex("by_visible_id", (q) => q.eq("visibleId", args.id))
23
+ .first();
24
+ const now = new Date().toISOString();
25
+ if (existing) {
26
+ await ctx.db.patch(existing._id, {
27
+ role: args.role,
28
+ parts: args.parts,
29
+ metadata: args.metadata,
30
+ });
31
+ return { id: args.id, updated: true };
32
+ }
33
+ await ctx.db.insert("messages", {
34
+ visibleId: args.id,
35
+ conversationId: args.conversationId,
36
+ userId: args.userId,
37
+ role: args.role,
38
+ parts: args.parts,
39
+ metadata: args.metadata,
40
+ createdAt: now,
41
+ });
42
+ return { id: args.id, created: true };
43
+ },
44
+ });
45
+ /**
46
+ * Add multiple messages to a conversation
47
+ */
48
+ export const addMany = mutation({
49
+ args: {
50
+ messages: v.array(v.object({
51
+ id: v.string(),
52
+ conversationId: v.string(),
53
+ userId: v.string(),
54
+ role: v.string(),
55
+ parts: vMessageParts,
56
+ metadata: v.optional(vMetadata),
57
+ })),
58
+ },
59
+ handler: async (ctx, args) => {
60
+ const now = new Date().toISOString();
61
+ const results = [];
62
+ for (const msg of args.messages) {
63
+ const existing = await ctx.db
64
+ .query("messages")
65
+ .withIndex("by_visible_id", (q) => q.eq("visibleId", msg.id))
66
+ .first();
67
+ if (existing) {
68
+ await ctx.db.patch(existing._id, {
69
+ role: msg.role,
70
+ parts: msg.parts,
71
+ metadata: msg.metadata,
72
+ });
73
+ results.push({ id: msg.id, updated: true });
74
+ }
75
+ else {
76
+ await ctx.db.insert("messages", {
77
+ visibleId: msg.id,
78
+ conversationId: msg.conversationId,
79
+ userId: msg.userId,
80
+ role: msg.role,
81
+ parts: msg.parts,
82
+ metadata: msg.metadata,
83
+ createdAt: now,
84
+ });
85
+ results.push({ id: msg.id, created: true });
86
+ }
87
+ }
88
+ return results;
89
+ },
90
+ });
91
+ /**
92
+ * Get messages from a conversation with optional filtering
93
+ */
94
+ export const get = query({
95
+ args: {
96
+ userId: v.string(),
97
+ conversationId: v.string(),
98
+ limit: v.optional(v.number()),
99
+ before: v.optional(v.string()),
100
+ after: v.optional(v.string()),
101
+ roles: v.optional(v.array(v.string())),
102
+ },
103
+ handler: async (ctx, args) => {
104
+ // Use compound index for efficient filtering by both conversationId and userId
105
+ let messages = await ctx.db
106
+ .query("messages")
107
+ .withIndex("by_conversation_id_and_user_id", (q) => q.eq("conversationId", args.conversationId).eq("userId", args.userId))
108
+ .collect();
109
+ if (args.roles && args.roles.length > 0) {
110
+ messages = messages.filter((m) => args.roles.includes(m.role));
111
+ }
112
+ if (args.before) {
113
+ messages = messages.filter((m) => m.createdAt < args.before);
114
+ }
115
+ if (args.after) {
116
+ messages = messages.filter((m) => m.createdAt > args.after);
117
+ }
118
+ messages.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
119
+ const limit = args.limit || 100;
120
+ if (messages.length > limit) {
121
+ messages = messages.slice(-limit);
122
+ }
123
+ return messages.map((m) => ({
124
+ id: m.visibleId,
125
+ role: m.role,
126
+ parts: m.parts,
127
+ metadata: {
128
+ ...m.metadata,
129
+ createdAt: m.createdAt,
130
+ },
131
+ }));
132
+ },
133
+ });
134
+ /**
135
+ * Clear messages for a user (optionally for a specific conversation)
136
+ */
137
+ export const clear = mutation({
138
+ args: {
139
+ userId: v.string(),
140
+ conversationId: v.optional(v.string()),
141
+ },
142
+ handler: async (ctx, args) => {
143
+ if (args.conversationId) {
144
+ const messages = await ctx.db
145
+ .query("messages")
146
+ .withIndex("by_conversation_id", (q) => q.eq("conversationId", args.conversationId))
147
+ .collect();
148
+ const userMessages = messages.filter((m) => m.userId === args.userId);
149
+ for (const message of userMessages) {
150
+ await ctx.db.delete(message._id);
151
+ }
152
+ const steps = await ctx.db
153
+ .query("conversationSteps")
154
+ .withIndex("by_conversation_id", (q) => q.eq("conversationId", args.conversationId))
155
+ .collect();
156
+ const userSteps = steps.filter((s) => s.userId === args.userId);
157
+ for (const step of userSteps) {
158
+ await ctx.db.delete(step._id);
159
+ }
160
+ }
161
+ else {
162
+ const conversations = await ctx.db
163
+ .query("conversations")
164
+ .withIndex("by_user_id", (q) => q.eq("userId", args.userId))
165
+ .collect();
166
+ for (const conversation of conversations) {
167
+ const messages = await ctx.db
168
+ .query("messages")
169
+ .withIndex("by_conversation_id", (q) => q.eq("conversationId", conversation.visibleId))
170
+ .collect();
171
+ for (const message of messages) {
172
+ await ctx.db.delete(message._id);
173
+ }
174
+ const steps = await ctx.db
175
+ .query("conversationSteps")
176
+ .withIndex("by_conversation_id", (q) => q.eq("conversationId", conversation.visibleId))
177
+ .collect();
178
+ for (const step of steps) {
179
+ await ctx.db.delete(step._id);
180
+ }
181
+ }
182
+ }
183
+ return { success: true };
184
+ },
185
+ });
186
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/component/messages.ts"],"names":[],"mappings":"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"}