@o-zakstam/voltagent-convex 1.1.2 → 1.1.3

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
package/dist/index.js CHANGED
@@ -1,435 +1,11 @@
1
- import { ConversationAlreadyExistsError, ConversationNotFoundError } from '@voltagent/core';
2
-
3
- // src/memory-adapter.ts
4
- var defaultLogger = {
5
- debug: (message, ...args) => console.debug(`[ConvexMemory] ${message}`, ...args),
6
- info: (message, ...args) => console.info(`[ConvexMemory] ${message}`, ...args),
7
- warn: (message, ...args) => console.warn(`[ConvexMemory] ${message}`, ...args),
8
- error: (message, ...args) => console.error(`[ConvexMemory] ${message}`, ...args)
9
- };
10
- var ConvexMemoryAdapter = class {
11
- client;
12
- api;
13
- debug;
14
- logger;
15
- constructor(options) {
16
- if (!options.client) {
17
- throw new Error("Convex client is required");
18
- }
19
- if (!options.api) {
20
- throw new Error("Convex API is required");
21
- }
22
- this.client = options.client;
23
- this.api = options.api;
24
- this.debug = options.debug ?? false;
25
- this.logger = options.logger ?? defaultLogger;
26
- this.log("Convex Memory adapter initialized");
27
- }
28
- /**
29
- * Log debug messages
30
- */
31
- log(message, ...args) {
32
- if (this.debug) {
33
- this.logger.debug(message, ...args);
34
- }
35
- }
36
- /**
37
- * Generate a cryptographically secure random ID
38
- */
39
- generateId() {
40
- return crypto.randomUUID();
41
- }
42
- // ============================================================================
43
- // Message Operations
44
- // ============================================================================
45
- /**
46
- * Add a single message to a conversation
47
- */
48
- async addMessage(message, userId, conversationId, _context) {
49
- await this.client.mutation(this.api.addMessage, {
50
- id: message.id || this.generateId(),
51
- conversationId,
52
- userId,
53
- role: message.role,
54
- parts: message.parts,
55
- metadata: message.metadata || null
56
- });
57
- this.log(`Added message to conversation ${conversationId}`);
58
- }
59
- /**
60
- * Add multiple messages to a conversation
61
- */
62
- async addMessages(messages, userId, conversationId, _context) {
63
- const messagesToAdd = messages.map((message) => ({
64
- id: message.id || this.generateId(),
65
- conversationId,
66
- userId,
67
- role: message.role,
68
- parts: message.parts,
69
- metadata: message.metadata || null
70
- }));
71
- await this.client.mutation(this.api.addMessages, {
72
- messages: messagesToAdd
73
- });
74
- this.log(
75
- `Added ${messages.length} messages to conversation ${conversationId}`
76
- );
77
- }
78
- /**
79
- * Get messages from a conversation with optional filtering
80
- */
81
- async getMessages(userId, conversationId, options, _context) {
82
- const { limit, before, after, roles } = options || {};
83
- const messages = await this.client.query(this.api.getMessages, {
84
- userId,
85
- conversationId,
86
- limit,
87
- before: before?.toISOString(),
88
- after: after?.toISOString(),
89
- roles
90
- });
91
- return messages.map((msg) => ({
92
- id: msg.id,
93
- role: msg.role,
94
- parts: msg.parts,
95
- metadata: {
96
- ...msg.metadata,
97
- createdAt: msg.metadata?.createdAt ? new Date(msg.metadata.createdAt) : /* @__PURE__ */ new Date()
98
- }
99
- }));
100
- }
101
- /**
102
- * Clear messages for a user (optionally for a specific conversation)
103
- */
104
- async clearMessages(userId, conversationId, _context) {
105
- await this.client.mutation(this.api.clearMessages, {
106
- userId,
107
- conversationId
108
- });
109
- this.log(`Cleared messages for user ${userId}`);
110
- }
111
- // ============================================================================
112
- // Conversation Steps Operations
113
- // ============================================================================
114
- /**
115
- * Save conversation steps for observability
116
- */
117
- async saveConversationSteps(steps) {
118
- if (steps.length === 0) {
119
- return;
120
- }
121
- await this.client.mutation(this.api.saveConversationSteps, {
122
- steps: steps.map((step) => ({
123
- id: step.id,
124
- conversationId: step.conversationId,
125
- userId: step.userId,
126
- agentId: step.agentId,
127
- agentName: step.agentName,
128
- operationId: step.operationId,
129
- stepIndex: step.stepIndex,
130
- type: step.type,
131
- role: step.role,
132
- content: step.content,
133
- arguments: step.arguments,
134
- result: step.result,
135
- usage: step.usage,
136
- subAgentId: step.subAgentId,
137
- subAgentName: step.subAgentName,
138
- createdAt: step.createdAt
139
- }))
140
- });
141
- this.log(`Saved ${steps.length} conversation steps`);
142
- }
143
- /**
144
- * Get conversation steps for observability
145
- */
146
- async getConversationSteps(userId, conversationId, options) {
147
- const steps = await this.client.query(this.api.getConversationSteps, {
148
- userId,
149
- conversationId,
150
- limit: options?.limit,
151
- operationId: options?.operationId
152
- });
153
- return steps;
154
- }
155
- // ============================================================================
156
- // Conversation Operations
157
- // ============================================================================
158
- /**
159
- * Create a new conversation
160
- */
161
- async createConversation(input) {
162
- try {
163
- const result = await this.client.mutation(this.api.createConversation, {
164
- id: input.id,
165
- resourceId: input.resourceId,
166
- userId: input.userId,
167
- title: input.title,
168
- metadata: input.metadata || {}
169
- });
170
- this.log(`Created conversation ${input.id}`);
171
- return result;
172
- } catch (error) {
173
- if (error instanceof Error && error.message.includes("already exists")) {
174
- throw new ConversationAlreadyExistsError(input.id);
175
- }
176
- throw error;
177
- }
178
- }
179
- /**
180
- * Get a conversation by ID
181
- */
182
- async getConversation(id) {
183
- const conversation = await this.client.query(this.api.getConversation, {
184
- id
185
- });
186
- return conversation;
187
- }
188
- /**
189
- * Get conversations by resource ID
190
- */
191
- async getConversations(resourceId) {
192
- const conversations = await this.client.query(this.api.getConversations, {
193
- resourceId
194
- });
195
- return conversations;
196
- }
197
- /**
198
- * Get conversations by user ID with optional query options
199
- */
200
- async getConversationsByUserId(userId, options) {
201
- const conversations = await this.client.query(
202
- this.api.getConversationsByUserId,
203
- {
204
- userId,
205
- limit: options?.limit,
206
- offset: options?.offset,
207
- orderBy: options?.orderBy,
208
- orderDirection: options?.orderDirection
209
- }
210
- );
211
- return conversations;
212
- }
213
- /**
214
- * Query conversations with filters
215
- */
216
- async queryConversations(options) {
217
- const conversations = await this.client.query(this.api.queryConversations, {
218
- userId: options.userId,
219
- resourceId: options.resourceId,
220
- limit: options.limit,
221
- offset: options.offset,
222
- orderBy: options.orderBy,
223
- orderDirection: options.orderDirection
224
- });
225
- return conversations;
226
- }
227
- /**
228
- * Update a conversation
229
- */
230
- async updateConversation(id, updates) {
231
- try {
232
- const result = await this.client.mutation(this.api.updateConversation, {
233
- id,
234
- title: updates.title,
235
- resourceId: updates.resourceId,
236
- metadata: updates.metadata
237
- });
238
- this.log(`Updated conversation ${id}`);
239
- return result;
240
- } catch (error) {
241
- if (error instanceof Error && error.message.includes("not found")) {
242
- throw new ConversationNotFoundError(id);
243
- }
244
- throw error;
245
- }
246
- }
247
- /**
248
- * Delete a conversation and its associated data
249
- */
250
- async deleteConversation(id) {
251
- try {
252
- await this.client.mutation(this.api.deleteConversation, { id });
253
- this.log(`Deleted conversation ${id}`);
254
- } catch (error) {
255
- if (error instanceof Error && error.message.includes("not found")) {
256
- throw new ConversationNotFoundError(id);
257
- }
258
- throw error;
259
- }
260
- }
261
- // ============================================================================
262
- // Working Memory Operations
263
- // ============================================================================
264
- /**
265
- * Get working memory content
266
- */
267
- async getWorkingMemory(params) {
268
- const result = await this.client.query(this.api.getWorkingMemory, {
269
- conversationId: params.conversationId,
270
- userId: params.userId,
271
- scope: params.scope
272
- });
273
- return result;
274
- }
275
- /**
276
- * Set working memory content
277
- */
278
- async setWorkingMemory(params) {
279
- try {
280
- await this.client.mutation(this.api.setWorkingMemory, {
281
- conversationId: params.conversationId,
282
- userId: params.userId,
283
- content: params.content,
284
- scope: params.scope
285
- });
286
- this.log(`Set working memory for ${params.scope}`);
287
- } catch (error) {
288
- if (error instanceof Error && error.message.includes("not found") && params.conversationId) {
289
- throw new ConversationNotFoundError(params.conversationId);
290
- }
291
- throw error;
292
- }
293
- }
294
- /**
295
- * Delete working memory content
296
- */
297
- async deleteWorkingMemory(params) {
298
- await this.client.mutation(this.api.deleteWorkingMemory, {
299
- conversationId: params.conversationId,
300
- userId: params.userId,
301
- scope: params.scope
302
- });
303
- this.log(`Deleted working memory for ${params.scope}`);
304
- }
305
- // ============================================================================
306
- // Workflow State Operations
307
- // ============================================================================
308
- /**
309
- * Get workflow state by execution ID
310
- */
311
- async getWorkflowState(executionId) {
312
- const state = await this.client.query(this.api.getWorkflowState, {
313
- executionId
314
- });
315
- if (!state) return null;
316
- const typedState = state;
317
- return {
318
- id: typedState.id,
319
- workflowId: typedState.workflowId,
320
- workflowName: typedState.workflowName,
321
- status: typedState.status,
322
- input: typedState.input,
323
- context: typedState.context,
324
- suspension: typedState.suspension,
325
- events: typedState.events,
326
- output: typedState.output,
327
- cancellation: typedState.cancellation,
328
- userId: typedState.userId,
329
- conversationId: typedState.conversationId,
330
- metadata: typedState.metadata,
331
- createdAt: new Date(typedState.createdAt),
332
- updatedAt: new Date(typedState.updatedAt)
333
- };
334
- }
335
- /**
336
- * Query workflow runs with optional filters
337
- */
338
- async queryWorkflowRuns(query) {
339
- const states = await this.client.query(this.api.queryWorkflowRuns, {
340
- workflowId: query.workflowId,
341
- status: query.status,
342
- from: query.from?.toISOString(),
343
- to: query.to?.toISOString(),
344
- limit: query.limit,
345
- offset: query.offset
346
- });
347
- return states.map((s) => ({
348
- id: s.id,
349
- workflowId: s.workflowId,
350
- workflowName: s.workflowName,
351
- status: s.status,
352
- input: s.input,
353
- context: s.context,
354
- suspension: s.suspension,
355
- events: s.events,
356
- output: s.output,
357
- cancellation: s.cancellation,
358
- userId: s.userId,
359
- conversationId: s.conversationId,
360
- metadata: s.metadata,
361
- createdAt: new Date(s.createdAt),
362
- updatedAt: new Date(s.updatedAt)
363
- }));
364
- }
365
- /**
366
- * Set workflow state
367
- */
368
- async setWorkflowState(executionId, state) {
369
- await this.client.mutation(this.api.setWorkflowState, {
370
- executionId,
371
- workflowId: state.workflowId,
372
- workflowName: state.workflowName,
373
- status: state.status,
374
- input: state.input,
375
- context: state.context,
376
- suspension: state.suspension,
377
- events: state.events,
378
- output: state.output,
379
- cancellation: state.cancellation,
380
- userId: state.userId,
381
- conversationId: state.conversationId,
382
- metadata: state.metadata,
383
- createdAt: state.createdAt.toISOString(),
384
- updatedAt: state.updatedAt.toISOString()
385
- });
386
- this.log(`Set workflow state ${executionId}`);
387
- }
388
- /**
389
- * Update workflow state
390
- */
391
- async updateWorkflowState(executionId, updates) {
392
- await this.client.mutation(this.api.updateWorkflowState, {
393
- executionId,
394
- status: updates.status,
395
- suspension: updates.suspension,
396
- events: updates.events,
397
- output: updates.output,
398
- cancellation: updates.cancellation,
399
- metadata: updates.metadata
400
- });
401
- this.log(`Updated workflow state ${executionId}`);
402
- }
403
- /**
404
- * Get suspended workflow states for a workflow
405
- */
406
- async getSuspendedWorkflowStates(workflowId) {
407
- const states = await this.client.query(
408
- this.api.getSuspendedWorkflowStates,
409
- {
410
- workflowId
411
- }
412
- );
413
- return states.map((s) => ({
414
- id: s.id,
415
- workflowId: s.workflowId,
416
- workflowName: s.workflowName,
417
- status: s.status,
418
- input: s.input,
419
- context: s.context,
420
- suspension: s.suspension,
421
- events: s.events,
422
- output: s.output,
423
- cancellation: s.cancellation,
424
- userId: s.userId,
425
- conversationId: s.conversationId,
426
- metadata: s.metadata,
427
- createdAt: new Date(s.createdAt),
428
- updatedAt: new Date(s.updatedAt)
429
- }));
430
- }
431
- };
432
-
433
- export { ConvexMemoryAdapter };
434
- //# sourceMappingURL=index.js.map
1
+ /**
2
+ * VoltAgent Convex Storage Adapter
3
+ *
4
+ * A StorageAdapter implementation for VoltAgent that persists
5
+ * conversation data to Convex database using a Convex component.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ // Main adapter class
10
+ export { ConvexMemoryAdapter } from "./memory-adapter";
435
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/memory-adapter.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Convex Memory Adapter for VoltAgent\n *\n * A StorageAdapter implementation that persists conversation data\n * to Convex database using the VoltAgent Convex component.\n */\n\nimport {\n ConversationAlreadyExistsError,\n ConversationNotFoundError,\n} from \"@voltagent/core\";\nimport type {\n Conversation,\n ConversationQueryOptions,\n ConversationStepRecord,\n CreateConversationInput,\n GetConversationStepsOptions,\n GetMessagesOptions,\n OperationContext,\n StorageAdapter,\n WorkflowStateEntry,\n WorkingMemoryScope,\n} from \"@voltagent/core\";\nimport type { UIMessage } from \"ai\";\nimport type {\n ConvexClient,\n ConvexMemoryAdapterOptions,\n Logger,\n VoltAgentApi,\n} from \"./types\";\n\n/**\n * Default console logger implementation\n */\nconst defaultLogger: Logger = {\n debug: (message: string, ...args: unknown[]) =>\n console.debug(`[ConvexMemory] ${message}`, ...args),\n info: (message: string, ...args: unknown[]) =>\n console.info(`[ConvexMemory] ${message}`, ...args),\n warn: (message: string, ...args: unknown[]) =>\n console.warn(`[ConvexMemory] ${message}`, ...args),\n error: (message: string, ...args: unknown[]) =>\n console.error(`[ConvexMemory] ${message}`, ...args),\n};\n\n/**\n * Convex Memory Adapter for VoltAgent\n *\n * Implements the StorageAdapter interface to persist conversation history,\n * working memory, and workflow state to a Convex database.\n *\n * @example\n * ```ts\n * import { ConvexHttpClient } from \"convex/browser\";\n * import { api } from \"./convex/_generated/api\";\n * import { ConvexMemoryAdapter } from \"@voltagent/convex\";\n *\n * const client = new ConvexHttpClient(process.env.CONVEX_URL);\n *\n * const adapter = new ConvexMemoryAdapter({\n * client,\n * api: api.voltagent,\n * });\n *\n * const memory = new Memory({ storage: adapter });\n * ```\n */\nexport class ConvexMemoryAdapter implements StorageAdapter {\n private client: ConvexClient;\n private api: VoltAgentApi;\n private debug: boolean;\n private logger: Logger;\n\n constructor(options: ConvexMemoryAdapterOptions) {\n if (!options.client) {\n throw new Error(\"Convex client is required\");\n }\n if (!options.api) {\n throw new Error(\"Convex API is required\");\n }\n\n this.client = options.client;\n this.api = options.api;\n this.debug = options.debug ?? false;\n this.logger = options.logger ?? defaultLogger;\n\n this.log(\"Convex Memory adapter initialized\");\n }\n\n /**\n * Log debug messages\n */\n private log(message: string, ...args: unknown[]): void {\n if (this.debug) {\n this.logger.debug(message, ...args);\n }\n }\n\n /**\n * Generate a cryptographically secure random ID\n */\n private generateId(): string {\n return crypto.randomUUID();\n }\n\n // ============================================================================\n // Message Operations\n // ============================================================================\n\n /**\n * Add a single message to a conversation\n */\n async addMessage(\n message: UIMessage,\n userId: string,\n conversationId: string,\n _context?: OperationContext,\n ): Promise<void> {\n await this.client.mutation(this.api.addMessage, {\n id: message.id || this.generateId(),\n conversationId,\n userId,\n role: message.role,\n parts: message.parts,\n metadata: message.metadata || null,\n });\n\n this.log(`Added message to conversation ${conversationId}`);\n }\n\n /**\n * Add multiple messages to a conversation\n */\n async addMessages(\n messages: UIMessage[],\n userId: string,\n conversationId: string,\n _context?: OperationContext,\n ): Promise<void> {\n const messagesToAdd = messages.map((message) => ({\n id: message.id || this.generateId(),\n conversationId,\n userId,\n role: message.role,\n parts: message.parts,\n metadata: message.metadata || null,\n }));\n\n await this.client.mutation(this.api.addMessages, {\n messages: messagesToAdd,\n });\n\n this.log(\n `Added ${messages.length} messages to conversation ${conversationId}`,\n );\n }\n\n /**\n * Get messages from a conversation with optional filtering\n */\n async getMessages(\n userId: string,\n conversationId: string,\n options?: GetMessagesOptions,\n _context?: OperationContext,\n ): Promise<UIMessage<{ createdAt: Date }>[]> {\n const { limit, before, after, roles } = options || {};\n\n const messages = await this.client.query(this.api.getMessages, {\n userId,\n conversationId,\n limit,\n before: before?.toISOString(),\n after: after?.toISOString(),\n roles,\n });\n\n return (\n messages as Array<{\n id: string;\n role: string;\n parts: unknown[];\n metadata?: Record<string, unknown> & { createdAt?: string };\n }>\n ).map((msg) => ({\n id: msg.id,\n role: msg.role as \"system\" | \"user\" | \"assistant\",\n parts: msg.parts as UIMessage[\"parts\"],\n metadata: {\n ...msg.metadata,\n createdAt: msg.metadata?.createdAt\n ? new Date(msg.metadata.createdAt as string)\n : new Date(),\n },\n }));\n }\n\n /**\n * Clear messages for a user (optionally for a specific conversation)\n */\n async clearMessages(\n userId: string,\n conversationId?: string,\n _context?: OperationContext,\n ): Promise<void> {\n await this.client.mutation(this.api.clearMessages, {\n userId,\n conversationId,\n });\n\n this.log(`Cleared messages for user ${userId}`);\n }\n\n // ============================================================================\n // Conversation Steps Operations\n // ============================================================================\n\n /**\n * Save conversation steps for observability\n */\n async saveConversationSteps(steps: ConversationStepRecord[]): Promise<void> {\n if (steps.length === 0) {\n return;\n }\n\n await this.client.mutation(this.api.saveConversationSteps, {\n steps: steps.map((step) => ({\n id: step.id,\n conversationId: step.conversationId,\n userId: step.userId,\n agentId: step.agentId,\n agentName: step.agentName,\n operationId: step.operationId,\n stepIndex: step.stepIndex,\n type: step.type,\n role: step.role,\n content: step.content,\n arguments: step.arguments,\n result: step.result,\n usage: step.usage,\n subAgentId: step.subAgentId,\n subAgentName: step.subAgentName,\n createdAt: step.createdAt,\n })),\n });\n\n this.log(`Saved ${steps.length} conversation steps`);\n }\n\n /**\n * Get conversation steps for observability\n */\n async getConversationSteps(\n userId: string,\n conversationId: string,\n options?: GetConversationStepsOptions,\n ): Promise<ConversationStepRecord[]> {\n const steps = await this.client.query(this.api.getConversationSteps, {\n userId,\n conversationId,\n limit: options?.limit,\n operationId: options?.operationId,\n });\n\n return steps as ConversationStepRecord[];\n }\n\n // ============================================================================\n // Conversation Operations\n // ============================================================================\n\n /**\n * Create a new conversation\n */\n async createConversation(\n input: CreateConversationInput,\n ): Promise<Conversation> {\n try {\n const result = await this.client.mutation(this.api.createConversation, {\n id: input.id,\n resourceId: input.resourceId,\n userId: input.userId,\n title: input.title,\n metadata: input.metadata || {},\n });\n\n this.log(`Created conversation ${input.id}`);\n\n return result as Conversation;\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"already exists\")) {\n throw new ConversationAlreadyExistsError(input.id);\n }\n throw error;\n }\n }\n\n /**\n * Get a conversation by ID\n */\n async getConversation(id: string): Promise<Conversation | null> {\n const conversation = await this.client.query(this.api.getConversation, {\n id,\n });\n\n return conversation as Conversation | null;\n }\n\n /**\n * Get conversations by resource ID\n */\n async getConversations(resourceId: string): Promise<Conversation[]> {\n const conversations = await this.client.query(this.api.getConversations, {\n resourceId,\n });\n\n return conversations as Conversation[];\n }\n\n /**\n * Get conversations by user ID with optional query options\n */\n async getConversationsByUserId(\n userId: string,\n options?: Omit<ConversationQueryOptions, \"userId\">,\n ): Promise<Conversation[]> {\n const conversations = await this.client.query(\n this.api.getConversationsByUserId,\n {\n userId,\n limit: options?.limit,\n offset: options?.offset,\n orderBy: options?.orderBy,\n orderDirection: options?.orderDirection,\n },\n );\n\n return conversations as Conversation[];\n }\n\n /**\n * Query conversations with filters\n */\n async queryConversations(\n options: ConversationQueryOptions,\n ): Promise<Conversation[]> {\n const conversations = await this.client.query(this.api.queryConversations, {\n userId: options.userId,\n resourceId: options.resourceId,\n limit: options.limit,\n offset: options.offset,\n orderBy: options.orderBy,\n orderDirection: options.orderDirection,\n });\n\n return conversations as Conversation[];\n }\n\n /**\n * Update a conversation\n */\n async updateConversation(\n id: string,\n updates: Partial<Omit<Conversation, \"id\" | \"createdAt\" | \"updatedAt\">>,\n ): Promise<Conversation> {\n try {\n const result = await this.client.mutation(this.api.updateConversation, {\n id,\n title: updates.title,\n resourceId: updates.resourceId,\n metadata: updates.metadata,\n });\n\n this.log(`Updated conversation ${id}`);\n\n return result as Conversation;\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"not found\")) {\n throw new ConversationNotFoundError(id);\n }\n throw error;\n }\n }\n\n /**\n * Delete a conversation and its associated data\n */\n async deleteConversation(id: string): Promise<void> {\n try {\n await this.client.mutation(this.api.deleteConversation, { id });\n this.log(`Deleted conversation ${id}`);\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"not found\")) {\n throw new ConversationNotFoundError(id);\n }\n throw error;\n }\n }\n\n // ============================================================================\n // Working Memory Operations\n // ============================================================================\n\n /**\n * Get working memory content\n */\n async getWorkingMemory(params: {\n conversationId?: string;\n userId?: string;\n scope: WorkingMemoryScope;\n }): Promise<string | null> {\n const result = await this.client.query(this.api.getWorkingMemory, {\n conversationId: params.conversationId,\n userId: params.userId,\n scope: params.scope,\n });\n\n return result as string | null;\n }\n\n /**\n * Set working memory content\n */\n async setWorkingMemory(params: {\n conversationId?: string;\n userId?: string;\n content: string;\n scope: WorkingMemoryScope;\n }): Promise<void> {\n try {\n await this.client.mutation(this.api.setWorkingMemory, {\n conversationId: params.conversationId,\n userId: params.userId,\n content: params.content,\n scope: params.scope,\n });\n\n this.log(`Set working memory for ${params.scope}`);\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"not found\") &&\n params.conversationId\n ) {\n throw new ConversationNotFoundError(params.conversationId);\n }\n throw error;\n }\n }\n\n /**\n * Delete working memory content\n */\n async deleteWorkingMemory(params: {\n conversationId?: string;\n userId?: string;\n scope: WorkingMemoryScope;\n }): Promise<void> {\n await this.client.mutation(this.api.deleteWorkingMemory, {\n conversationId: params.conversationId,\n userId: params.userId,\n scope: params.scope,\n });\n\n this.log(`Deleted working memory for ${params.scope}`);\n }\n\n // ============================================================================\n // Workflow State Operations\n // ============================================================================\n\n /**\n * Get workflow state by execution ID\n */\n async getWorkflowState(\n executionId: string,\n ): Promise<WorkflowStateEntry | null> {\n const state = await this.client.query(this.api.getWorkflowState, {\n executionId,\n });\n\n if (!state) return null;\n\n const typedState = state as {\n id: string;\n workflowId: string;\n workflowName: string;\n status: string;\n input?: unknown;\n context?: unknown;\n suspension?: unknown;\n events?: unknown[];\n output?: unknown;\n cancellation?: unknown;\n userId?: string;\n conversationId?: string;\n metadata?: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n };\n\n return {\n id: typedState.id,\n workflowId: typedState.workflowId,\n workflowName: typedState.workflowName,\n status: typedState.status as WorkflowStateEntry[\"status\"],\n input: typedState.input,\n context: typedState.context as WorkflowStateEntry[\"context\"],\n suspension: typedState.suspension as WorkflowStateEntry[\"suspension\"],\n events: typedState.events as WorkflowStateEntry[\"events\"],\n output: typedState.output,\n cancellation:\n typedState.cancellation as WorkflowStateEntry[\"cancellation\"],\n userId: typedState.userId,\n conversationId: typedState.conversationId,\n metadata: typedState.metadata,\n createdAt: new Date(typedState.createdAt),\n updatedAt: new Date(typedState.updatedAt),\n };\n }\n\n /**\n * Query workflow runs with optional filters\n */\n async queryWorkflowRuns(query: {\n workflowId?: string;\n status?: WorkflowStateEntry[\"status\"];\n from?: Date;\n to?: Date;\n limit?: number;\n offset?: number;\n }): Promise<WorkflowStateEntry[]> {\n const states = await this.client.query(this.api.queryWorkflowRuns, {\n workflowId: query.workflowId,\n status: query.status,\n from: query.from?.toISOString(),\n to: query.to?.toISOString(),\n limit: query.limit,\n offset: query.offset,\n });\n\n return (\n states as Array<{\n id: string;\n workflowId: string;\n workflowName: string;\n status: string;\n input?: unknown;\n context?: unknown;\n suspension?: unknown;\n events?: unknown[];\n output?: unknown;\n cancellation?: unknown;\n userId?: string;\n conversationId?: string;\n metadata?: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n }>\n ).map((s) => ({\n id: s.id,\n workflowId: s.workflowId,\n workflowName: s.workflowName,\n status: s.status as WorkflowStateEntry[\"status\"],\n input: s.input,\n context: s.context as WorkflowStateEntry[\"context\"],\n suspension: s.suspension as WorkflowStateEntry[\"suspension\"],\n events: s.events as WorkflowStateEntry[\"events\"],\n output: s.output,\n cancellation: s.cancellation as WorkflowStateEntry[\"cancellation\"],\n userId: s.userId,\n conversationId: s.conversationId,\n metadata: s.metadata,\n createdAt: new Date(s.createdAt),\n updatedAt: new Date(s.updatedAt),\n }));\n }\n\n /**\n * Set workflow state\n */\n async setWorkflowState(\n executionId: string,\n state: WorkflowStateEntry,\n ): Promise<void> {\n await this.client.mutation(this.api.setWorkflowState, {\n executionId,\n workflowId: state.workflowId,\n workflowName: state.workflowName,\n status: state.status,\n input: state.input,\n context: state.context,\n suspension: state.suspension,\n events: state.events,\n output: state.output,\n cancellation: state.cancellation,\n userId: state.userId,\n conversationId: state.conversationId,\n metadata: state.metadata,\n createdAt: state.createdAt.toISOString(),\n updatedAt: state.updatedAt.toISOString(),\n });\n\n this.log(`Set workflow state ${executionId}`);\n }\n\n /**\n * Update workflow state\n */\n async updateWorkflowState(\n executionId: string,\n updates: Partial<WorkflowStateEntry>,\n ): Promise<void> {\n await this.client.mutation(this.api.updateWorkflowState, {\n executionId,\n status: updates.status,\n suspension: updates.suspension,\n events: updates.events,\n output: updates.output,\n cancellation: updates.cancellation,\n metadata: updates.metadata,\n });\n\n this.log(`Updated workflow state ${executionId}`);\n }\n\n /**\n * Get suspended workflow states for a workflow\n */\n async getSuspendedWorkflowStates(\n workflowId: string,\n ): Promise<WorkflowStateEntry[]> {\n const states = await this.client.query(\n this.api.getSuspendedWorkflowStates,\n {\n workflowId,\n },\n );\n\n return (\n states as Array<{\n id: string;\n workflowId: string;\n workflowName: string;\n status: string;\n input?: unknown;\n context?: unknown;\n suspension?: unknown;\n events?: unknown[];\n output?: unknown;\n cancellation?: unknown;\n userId?: string;\n conversationId?: string;\n metadata?: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n }>\n ).map((s) => ({\n id: s.id,\n workflowId: s.workflowId,\n workflowName: s.workflowName,\n status: s.status as WorkflowStateEntry[\"status\"],\n input: s.input,\n context: s.context as WorkflowStateEntry[\"context\"],\n suspension: s.suspension as WorkflowStateEntry[\"suspension\"],\n events: s.events as WorkflowStateEntry[\"events\"],\n output: s.output,\n cancellation: s.cancellation as WorkflowStateEntry[\"cancellation\"],\n userId: s.userId,\n conversationId: s.conversationId,\n metadata: s.metadata,\n createdAt: new Date(s.createdAt),\n updatedAt: new Date(s.updatedAt),\n }));\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Convex Memory Adapter for VoltAgent
3
+ *
4
+ * A StorageAdapter implementation that persists conversation data
5
+ * to Convex database using the VoltAgent Convex component.
6
+ */
7
+ import type { Conversation, ConversationQueryOptions, ConversationStepRecord, CreateConversationInput, GetConversationStepsOptions, GetMessagesOptions, OperationContext, StorageAdapter, WorkflowStateEntry, WorkingMemoryScope } from "@voltagent/core";
8
+ import type { UIMessage } from "ai";
9
+ import type { ConvexMemoryAdapterOptions } from "./types";
10
+ /**
11
+ * Convex Memory Adapter for VoltAgent
12
+ *
13
+ * Implements the StorageAdapter interface to persist conversation history,
14
+ * working memory, and workflow state to a Convex database.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { ConvexHttpClient } from "convex/browser";
19
+ * import { api } from "./convex/_generated/api";
20
+ * import { ConvexMemoryAdapter } from "@voltagent/convex";
21
+ *
22
+ * const client = new ConvexHttpClient(process.env.CONVEX_URL);
23
+ *
24
+ * const adapter = new ConvexMemoryAdapter({
25
+ * client,
26
+ * api: api.voltagent,
27
+ * });
28
+ *
29
+ * const memory = new Memory({ storage: adapter });
30
+ * ```
31
+ */
32
+ export declare class ConvexMemoryAdapter implements StorageAdapter {
33
+ private client;
34
+ private api;
35
+ private debug;
36
+ private logger;
37
+ constructor(options: ConvexMemoryAdapterOptions);
38
+ /**
39
+ * Log debug messages
40
+ */
41
+ private log;
42
+ /**
43
+ * Generate a cryptographically secure random ID
44
+ */
45
+ private generateId;
46
+ /**
47
+ * Add a single message to a conversation
48
+ */
49
+ addMessage(message: UIMessage, userId: string, conversationId: string, _context?: OperationContext): Promise<void>;
50
+ /**
51
+ * Add multiple messages to a conversation
52
+ */
53
+ addMessages(messages: UIMessage[], userId: string, conversationId: string, _context?: OperationContext): Promise<void>;
54
+ /**
55
+ * Get messages from a conversation with optional filtering
56
+ */
57
+ getMessages(userId: string, conversationId: string, options?: GetMessagesOptions, _context?: OperationContext): Promise<UIMessage<{
58
+ createdAt: Date;
59
+ }>[]>;
60
+ /**
61
+ * Clear messages for a user (optionally for a specific conversation)
62
+ */
63
+ clearMessages(userId: string, conversationId?: string, _context?: OperationContext): Promise<void>;
64
+ /**
65
+ * Save conversation steps for observability
66
+ */
67
+ saveConversationSteps(steps: ConversationStepRecord[]): Promise<void>;
68
+ /**
69
+ * Get conversation steps for observability
70
+ */
71
+ getConversationSteps(userId: string, conversationId: string, options?: GetConversationStepsOptions): Promise<ConversationStepRecord[]>;
72
+ /**
73
+ * Create a new conversation
74
+ */
75
+ createConversation(input: CreateConversationInput): Promise<Conversation>;
76
+ /**
77
+ * Get a conversation by ID
78
+ */
79
+ getConversation(id: string): Promise<Conversation | null>;
80
+ /**
81
+ * Get conversations by resource ID
82
+ */
83
+ getConversations(resourceId: string): Promise<Conversation[]>;
84
+ /**
85
+ * Get conversations by user ID with optional query options
86
+ */
87
+ getConversationsByUserId(userId: string, options?: Omit<ConversationQueryOptions, "userId">): Promise<Conversation[]>;
88
+ /**
89
+ * Query conversations with filters
90
+ */
91
+ queryConversations(options: ConversationQueryOptions): Promise<Conversation[]>;
92
+ /**
93
+ * Update a conversation
94
+ */
95
+ updateConversation(id: string, updates: Partial<Omit<Conversation, "id" | "createdAt" | "updatedAt">>): Promise<Conversation>;
96
+ /**
97
+ * Delete a conversation and its associated data
98
+ */
99
+ deleteConversation(id: string): Promise<void>;
100
+ /**
101
+ * Get working memory content
102
+ */
103
+ getWorkingMemory(params: {
104
+ conversationId?: string;
105
+ userId?: string;
106
+ scope: WorkingMemoryScope;
107
+ }): Promise<string | null>;
108
+ /**
109
+ * Set working memory content
110
+ */
111
+ setWorkingMemory(params: {
112
+ conversationId?: string;
113
+ userId?: string;
114
+ content: string;
115
+ scope: WorkingMemoryScope;
116
+ }): Promise<void>;
117
+ /**
118
+ * Delete working memory content
119
+ */
120
+ deleteWorkingMemory(params: {
121
+ conversationId?: string;
122
+ userId?: string;
123
+ scope: WorkingMemoryScope;
124
+ }): Promise<void>;
125
+ /**
126
+ * Get workflow state by execution ID
127
+ */
128
+ getWorkflowState(executionId: string): Promise<WorkflowStateEntry | null>;
129
+ /**
130
+ * Query workflow runs with optional filters
131
+ */
132
+ queryWorkflowRuns(query: {
133
+ workflowId?: string;
134
+ status?: WorkflowStateEntry["status"];
135
+ from?: Date;
136
+ to?: Date;
137
+ limit?: number;
138
+ offset?: number;
139
+ }): Promise<WorkflowStateEntry[]>;
140
+ /**
141
+ * Set workflow state
142
+ */
143
+ setWorkflowState(executionId: string, state: WorkflowStateEntry): Promise<void>;
144
+ /**
145
+ * Update workflow state
146
+ */
147
+ updateWorkflowState(executionId: string, updates: Partial<WorkflowStateEntry>): Promise<void>;
148
+ /**
149
+ * Get suspended workflow states for a workflow
150
+ */
151
+ getSuspendedWorkflowStates(workflowId: string): Promise<WorkflowStateEntry[]>;
152
+ }
153
+ //# sourceMappingURL=memory-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-adapter.d.ts","sourceRoot":"","sources":["../src/memory-adapter.ts"],"names":[],"mappings":"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"}