@mastra/convex 0.0.0-scorers-logs-20251208103858 → 0.0.0-standard-schema-20260123120255

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 (48) hide show
  1. package/CHANGELOG.md +901 -5
  2. package/README.md +1 -1
  3. package/dist/{chunk-QKN2PWR2.cjs → chunk-BKVR7SL7.cjs} +2 -89
  4. package/dist/chunk-BKVR7SL7.cjs.map +1 -0
  5. package/dist/chunk-H5QJE733.cjs +104 -0
  6. package/dist/chunk-H5QJE733.cjs.map +1 -0
  7. package/dist/chunk-HXB4DWFE.js +73 -0
  8. package/dist/chunk-HXB4DWFE.js.map +1 -0
  9. package/dist/{chunk-NZCHEPNU.js → chunk-KSAPIIEJ.js} +5 -65
  10. package/dist/chunk-KSAPIIEJ.js.map +1 -0
  11. package/dist/docs/README.md +32 -0
  12. package/dist/docs/SKILL.md +46 -0
  13. package/dist/docs/SOURCE_MAP.json +63 -0
  14. package/dist/docs/storage/01-reference.md +140 -0
  15. package/dist/docs/vectors/01-reference.md +240 -0
  16. package/dist/index.cjs +223 -303
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.js +207 -287
  19. package/dist/index.js.map +1 -1
  20. package/dist/schema.cjs +72 -0
  21. package/dist/schema.cjs.map +1 -0
  22. package/dist/{server/schema.d.ts → schema.d.ts} +14 -1
  23. package/dist/schema.d.ts.map +1 -0
  24. package/dist/schema.js +3 -0
  25. package/dist/schema.js.map +1 -0
  26. package/dist/server/index.cjs +19 -18
  27. package/dist/server/index.d.ts +1 -1
  28. package/dist/server/index.d.ts.map +1 -1
  29. package/dist/server/index.js +2 -1
  30. package/dist/storage/db/index.d.ts +66 -0
  31. package/dist/storage/db/index.d.ts.map +1 -0
  32. package/dist/storage/domains/{memory.d.ts → memory/index.d.ts} +8 -6
  33. package/dist/storage/domains/memory/index.d.ts.map +1 -0
  34. package/dist/storage/domains/{scores.d.ts → scores/index.d.ts} +11 -18
  35. package/dist/storage/domains/scores/index.d.ts.map +1 -0
  36. package/dist/storage/domains/{workflows.d.ts → workflows/index.d.ts} +13 -13
  37. package/dist/storage/domains/workflows/index.d.ts.map +1 -0
  38. package/dist/storage/index.d.ts +56 -155
  39. package/dist/storage/index.d.ts.map +1 -1
  40. package/package.json +23 -13
  41. package/dist/chunk-NZCHEPNU.js.map +0 -1
  42. package/dist/chunk-QKN2PWR2.cjs.map +0 -1
  43. package/dist/server/schema.d.ts.map +0 -1
  44. package/dist/storage/domains/memory.d.ts.map +0 -1
  45. package/dist/storage/domains/scores.d.ts.map +0 -1
  46. package/dist/storage/domains/workflows.d.ts.map +0 -1
  47. package/dist/storage/operations.d.ts +0 -40
  48. package/dist/storage/operations.d.ts.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,10 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkQKN2PWR2_cjs = require('./chunk-QKN2PWR2.cjs');
3
+ var chunkBKVR7SL7_cjs = require('./chunk-BKVR7SL7.cjs');
4
+ var chunkH5QJE733_cjs = require('./chunk-H5QJE733.cjs');
4
5
  var storage = require('@mastra/core/storage');
5
6
  var agent = require('@mastra/core/agent');
6
7
  var error = require('@mastra/core/error');
7
8
  var crypto = require('crypto');
9
+ var base = require('@mastra/core/base');
8
10
  var vector = require('@mastra/core/vector');
9
11
 
10
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -74,13 +76,127 @@ var ConvexAdminClient = class {
74
76
  return result;
75
77
  }
76
78
  };
79
+ function resolveConvexConfig(config) {
80
+ if ("client" in config) {
81
+ return config.client;
82
+ }
83
+ return new ConvexAdminClient(config);
84
+ }
85
+ var ConvexDB = class extends base.MastraBase {
86
+ constructor(client) {
87
+ super({ name: "convex-db" });
88
+ this.client = client;
89
+ }
90
+ async hasColumn(_table, _column) {
91
+ return true;
92
+ }
93
+ async createTable({
94
+ tableName,
95
+ schema: _schema
96
+ }) {
97
+ this.logger.debug(`ConvexDB: createTable called for ${tableName} (schema managed server-side)`);
98
+ }
99
+ async alterTable({
100
+ tableName,
101
+ schema: _schema,
102
+ ifNotExists: _ifNotExists
103
+ }) {
104
+ this.logger.debug(`ConvexDB: alterTable called for ${tableName} (schema managed server-side)`);
105
+ }
106
+ async clearTable({ tableName }) {
107
+ let hasMore = true;
108
+ while (hasMore) {
109
+ const response = await this.client.callStorageRaw({
110
+ op: "clearTable",
111
+ tableName
112
+ });
113
+ hasMore = response.hasMore ?? false;
114
+ }
115
+ }
116
+ async dropTable({ tableName }) {
117
+ let hasMore = true;
118
+ while (hasMore) {
119
+ const response = await this.client.callStorageRaw({
120
+ op: "dropTable",
121
+ tableName
122
+ });
123
+ hasMore = response.hasMore ?? false;
124
+ }
125
+ }
126
+ async insert({ tableName, record }) {
127
+ await this.client.callStorage({
128
+ op: "insert",
129
+ tableName,
130
+ record: this.normalizeRecord(tableName, record)
131
+ });
132
+ }
133
+ async batchInsert({ tableName, records }) {
134
+ if (records.length === 0) return;
135
+ await this.client.callStorage({
136
+ op: "batchInsert",
137
+ tableName,
138
+ records: records.map((record) => this.normalizeRecord(tableName, record))
139
+ });
140
+ }
141
+ async load({ tableName, keys }) {
142
+ const result = await this.client.callStorage({
143
+ op: "load",
144
+ tableName,
145
+ keys
146
+ });
147
+ return result;
148
+ }
149
+ async queryTable(tableName, filters) {
150
+ return this.client.callStorage({
151
+ op: "queryTable",
152
+ tableName,
153
+ filters
154
+ });
155
+ }
156
+ async deleteMany(tableName, ids) {
157
+ if (ids.length === 0) return;
158
+ await this.client.callStorage({
159
+ op: "deleteMany",
160
+ tableName,
161
+ ids
162
+ });
163
+ }
164
+ normalizeRecord(tableName, record) {
165
+ const normalized = { ...record };
166
+ if (tableName === storage.TABLE_WORKFLOW_SNAPSHOT && !normalized.id) {
167
+ const runId = normalized.run_id || normalized.runId;
168
+ const workflowName = normalized.workflow_name || normalized.workflowName;
169
+ normalized.id = workflowName ? `${workflowName}-${runId}` : runId;
170
+ }
171
+ if (!normalized.id) {
172
+ normalized.id = crypto__default.default.randomUUID();
173
+ }
174
+ for (const [key, value] of Object.entries(normalized)) {
175
+ if (value instanceof Date) {
176
+ normalized[key] = value.toISOString();
177
+ }
178
+ }
179
+ return normalized;
180
+ }
181
+ };
182
+
183
+ // src/storage/domains/memory/index.ts
77
184
  var MemoryConvex = class extends storage.MemoryStorage {
78
- constructor(operations) {
185
+ #db;
186
+ constructor(config) {
79
187
  super();
80
- this.operations = operations;
188
+ const client = resolveConvexConfig(config);
189
+ this.#db = new ConvexDB(client);
190
+ }
191
+ async init() {
192
+ }
193
+ async dangerouslyClearAll() {
194
+ await this.#db.clearTable({ tableName: storage.TABLE_THREADS });
195
+ await this.#db.clearTable({ tableName: storage.TABLE_MESSAGES });
196
+ await this.#db.clearTable({ tableName: storage.TABLE_RESOURCES });
81
197
  }
82
198
  async getThreadById({ threadId }) {
83
- const row = await this.operations.load({
199
+ const row = await this.#db.load({
84
200
  tableName: storage.TABLE_THREADS,
85
201
  keys: { id: threadId }
86
202
  });
@@ -93,7 +209,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
93
209
  };
94
210
  }
95
211
  async saveThread({ thread }) {
96
- await this.operations.insert({
212
+ await this.#db.insert({
97
213
  tableName: storage.TABLE_THREADS,
98
214
  record: {
99
215
  ...thread,
@@ -129,27 +245,50 @@ var MemoryConvex = class extends storage.MemoryStorage {
129
245
  return updated;
130
246
  }
131
247
  async deleteThread({ threadId }) {
132
- const messages = await this.operations.queryTable(storage.TABLE_MESSAGES, [
248
+ const messages = await this.#db.queryTable(storage.TABLE_MESSAGES, [
133
249
  { field: "thread_id", value: threadId }
134
250
  ]);
135
- await this.operations.deleteMany(
251
+ await this.#db.deleteMany(
136
252
  storage.TABLE_MESSAGES,
137
253
  messages.map((msg) => msg.id)
138
254
  );
139
- await this.operations.deleteMany(storage.TABLE_THREADS, [threadId]);
255
+ await this.#db.deleteMany(storage.TABLE_THREADS, [threadId]);
140
256
  }
141
- async listThreadsByResourceId(args) {
142
- const { resourceId, page = 0, perPage: perPageInput, orderBy } = args;
257
+ async listThreads(args) {
258
+ const { page = 0, perPage: perPageInput, orderBy, filter } = args;
259
+ try {
260
+ this.validatePaginationInput(page, perPageInput ?? 100);
261
+ } catch (error$1) {
262
+ throw new error.MastraError(
263
+ {
264
+ id: storage.createStorageErrorId("CONVEX", "LIST_THREADS", "INVALID_PAGE"),
265
+ domain: error.ErrorDomain.STORAGE,
266
+ category: error.ErrorCategory.USER,
267
+ details: { page, ...perPageInput !== void 0 && { perPage: perPageInput } }
268
+ },
269
+ error$1 instanceof Error ? error$1 : new Error("Invalid pagination parameters")
270
+ );
271
+ }
143
272
  const perPage = storage.normalizePerPage(perPageInput, 100);
144
273
  const { field, direction } = this.parseOrderBy(orderBy);
145
274
  const { offset, perPage: perPageForResponse } = storage.calculatePagination(page, perPageInput, perPage);
146
- const rows = await this.operations.queryTable(storage.TABLE_THREADS, [{ field: "resourceId", value: resourceId }]);
147
- const threads = rows.map((row) => ({
275
+ const queryFilters = [];
276
+ if (filter?.resourceId) {
277
+ queryFilters.push({ field: "resourceId", value: filter.resourceId });
278
+ }
279
+ const rows = await this.#db.queryTable(storage.TABLE_THREADS, queryFilters);
280
+ let threads = rows.map((row) => ({
148
281
  ...row,
149
282
  metadata: typeof row.metadata === "string" ? JSON.parse(row.metadata) : row.metadata,
150
283
  createdAt: new Date(row.createdAt),
151
284
  updatedAt: new Date(row.updatedAt)
152
285
  }));
286
+ if (filter?.metadata && Object.keys(filter.metadata).length > 0) {
287
+ threads = threads.filter((thread) => {
288
+ if (!thread.metadata) return false;
289
+ return Object.entries(filter.metadata).every(([key, value]) => thread.metadata[key] === value);
290
+ });
291
+ }
153
292
  threads.sort((a, b) => {
154
293
  const aValue = a[field];
155
294
  const bValue = b[field];
@@ -186,23 +325,13 @@ var MemoryConvex = class extends storage.MemoryStorage {
186
325
  const { field, direction } = this.parseOrderBy(orderBy, "ASC");
187
326
  let rows = [];
188
327
  for (const tid of threadIds) {
189
- const threadRows = await this.operations.queryTable(storage.TABLE_MESSAGES, [
190
- { field: "thread_id", value: tid }
191
- ]);
328
+ const threadRows = await this.#db.queryTable(storage.TABLE_MESSAGES, [{ field: "thread_id", value: tid }]);
192
329
  rows.push(...threadRows);
193
330
  }
194
331
  if (resourceId) {
195
332
  rows = rows.filter((row) => row.resourceId === resourceId);
196
333
  }
197
- if (filter?.dateRange) {
198
- const { start, end } = filter.dateRange;
199
- rows = rows.filter((row) => {
200
- const created = new Date(row.createdAt).getTime();
201
- if (start && created < start.getTime()) return false;
202
- if (end && created > end.getTime()) return false;
203
- return true;
204
- });
205
- }
334
+ rows = storage.filterByDateRange(rows, (row) => new Date(row.createdAt), filter?.dateRange);
206
335
  rows.sort((a, b) => {
207
336
  const aValue = field === "createdAt" || field === "updatedAt" ? new Date(a[field]).getTime() : a[field];
208
337
  const bValue = field === "createdAt" || field === "updatedAt" ? new Date(b[field]).getTime() : b[field];
@@ -232,14 +361,14 @@ var MemoryConvex = class extends storage.MemoryStorage {
232
361
  }
233
362
  }
234
363
  if (!target) {
235
- const messageRows = await this.operations.queryTable(storage.TABLE_MESSAGES, [
364
+ const messageRows = await this.#db.queryTable(storage.TABLE_MESSAGES, [
236
365
  { field: "id", value: includeItem.id }
237
366
  ]);
238
367
  if (messageRows.length > 0) {
239
368
  target = messageRows[0];
240
369
  targetThreadId = target.thread_id;
241
370
  if (targetThreadId && !threadMessagesCache.has(targetThreadId)) {
242
- const otherThreadRows = await this.operations.queryTable(storage.TABLE_MESSAGES, [
371
+ const otherThreadRows = await this.#db.queryTable(storage.TABLE_MESSAGES, [
243
372
  { field: "thread_id", value: targetThreadId }
244
373
  ]);
245
374
  threadMessagesCache.set(targetThreadId, otherThreadRows);
@@ -282,7 +411,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
282
411
  if (messageIds.length === 0) {
283
412
  return { messages: [] };
284
413
  }
285
- const rows = await this.operations.queryTable(storage.TABLE_MESSAGES, void 0);
414
+ const rows = await this.#db.queryTable(storage.TABLE_MESSAGES, void 0);
286
415
  const filtered = rows.filter((row) => messageIds.includes(row.id)).map((row) => this.parseStoredMessage(row));
287
416
  const list = new agent.MessageList().add(filtered, "memory");
288
417
  return { messages: list.get.all.db() };
@@ -307,7 +436,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
307
436
  resourceId: message.resourceId
308
437
  };
309
438
  });
310
- await this.operations.batchInsert({
439
+ await this.#db.batchInsert({
311
440
  tableName: storage.TABLE_MESSAGES,
312
441
  records: normalized
313
442
  });
@@ -316,7 +445,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
316
445
  for (const threadId of threadIds) {
317
446
  const thread = await this.getThreadById({ threadId });
318
447
  if (thread) {
319
- await this.operations.insert({
448
+ await this.#db.insert({
320
449
  tableName: storage.TABLE_THREADS,
321
450
  record: {
322
451
  ...thread,
@@ -335,7 +464,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
335
464
  messages
336
465
  }) {
337
466
  if (messages.length === 0) return [];
338
- const existing = await this.operations.queryTable(storage.TABLE_MESSAGES, void 0);
467
+ const existing = await this.#db.queryTable(storage.TABLE_MESSAGES, void 0);
339
468
  const updated = [];
340
469
  const affectedThreadIds = /* @__PURE__ */ new Set();
341
470
  for (const update of messages) {
@@ -364,7 +493,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
364
493
  };
365
494
  current.content = JSON.stringify(mergedContent);
366
495
  }
367
- await this.operations.insert({
496
+ await this.#db.insert({
368
497
  tableName: storage.TABLE_MESSAGES,
369
498
  record: current
370
499
  });
@@ -374,7 +503,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
374
503
  for (const threadId of affectedThreadIds) {
375
504
  const thread = await this.getThreadById({ threadId });
376
505
  if (thread) {
377
- await this.operations.insert({
506
+ await this.#db.insert({
378
507
  tableName: storage.TABLE_THREADS,
379
508
  record: {
380
509
  ...thread,
@@ -389,7 +518,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
389
518
  return updated;
390
519
  }
391
520
  async deleteMessages(messageIds) {
392
- await this.operations.deleteMany(storage.TABLE_MESSAGES, messageIds);
521
+ await this.#db.deleteMany(storage.TABLE_MESSAGES, messageIds);
393
522
  }
394
523
  async saveResource({ resource }) {
395
524
  const record = {
@@ -400,14 +529,14 @@ var MemoryConvex = class extends storage.MemoryStorage {
400
529
  if (resource.metadata !== void 0) {
401
530
  record.metadata = resource.metadata;
402
531
  }
403
- await this.operations.insert({
532
+ await this.#db.insert({
404
533
  tableName: storage.TABLE_RESOURCES,
405
534
  record
406
535
  });
407
536
  return resource;
408
537
  }
409
538
  async getResourceById({ resourceId }) {
410
- const record = await this.operations.load({
539
+ const record = await this.#db.load({
411
540
  tableName: storage.TABLE_RESOURCES,
412
541
  keys: { id: resourceId }
413
542
  });
@@ -493,12 +622,19 @@ var MemoryConvex = class extends storage.MemoryStorage {
493
622
  }
494
623
  };
495
624
  var ScoresConvex = class extends storage.ScoresStorage {
496
- constructor(operations) {
625
+ #db;
626
+ constructor(config) {
497
627
  super();
498
- this.operations = operations;
628
+ const client = resolveConvexConfig(config);
629
+ this.#db = new ConvexDB(client);
630
+ }
631
+ async init() {
632
+ }
633
+ async dangerouslyClearAll() {
634
+ await this.#db.clearTable({ tableName: storage.TABLE_SCORERS });
499
635
  }
500
636
  async getScoreById({ id }) {
501
- const row = await this.operations.load({
637
+ const row = await this.#db.load({
502
638
  tableName: storage.TABLE_SCORERS,
503
639
  keys: { id }
504
640
  });
@@ -512,7 +648,7 @@ var ScoresConvex = class extends storage.ScoresStorage {
512
648
  createdAt: now.toISOString(),
513
649
  updatedAt: now.toISOString()
514
650
  };
515
- await this.operations.insert({
651
+ await this.#db.insert({
516
652
  tableName: storage.TABLE_SCORERS,
517
653
  record
518
654
  });
@@ -563,7 +699,7 @@ var ScoresConvex = class extends storage.ScoresStorage {
563
699
  new Error("page must be >= 0")
564
700
  );
565
701
  }
566
- const rows = await this.operations.queryTable(storage.TABLE_SCORERS, void 0);
702
+ const rows = await this.#db.queryTable(storage.TABLE_SCORERS, void 0);
567
703
  const filtered = rows.filter((row) => filters.scorerId ? row.scorerId === filters.scorerId : true).filter((row) => filters.entityId ? row.entityId === filters.entityId : true).filter((row) => filters.entityType ? row.entityType === filters.entityType : true).filter((row) => filters.runId ? row.runId === filters.runId : true).filter((row) => filters.source ? row.source === filters.source : true).sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
568
704
  const { perPage, page } = pagination;
569
705
  const perPageValue = perPage === false ? filtered.length : perPage;
@@ -589,9 +725,16 @@ var ScoresConvex = class extends storage.ScoresStorage {
589
725
  }
590
726
  };
591
727
  var WorkflowsConvex = class extends storage.WorkflowsStorage {
592
- constructor(operations) {
728
+ #db;
729
+ constructor(config) {
593
730
  super();
594
- this.operations = operations;
731
+ const client = resolveConvexConfig(config);
732
+ this.#db = new ConvexDB(client);
733
+ }
734
+ async init() {
735
+ }
736
+ async dangerouslyClearAll() {
737
+ await this.#db.clearTable({ tableName: storage.TABLE_WORKFLOW_SNAPSHOT });
595
738
  }
596
739
  async updateWorkflowResults({
597
740
  workflowName,
@@ -638,11 +781,11 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
638
781
  snapshot
639
782
  }) {
640
783
  const now = /* @__PURE__ */ new Date();
641
- const existing = await this.operations.load({
784
+ const existing = await this.#db.load({
642
785
  tableName: storage.TABLE_WORKFLOW_SNAPSHOT,
643
786
  keys: { workflow_name: workflowName, run_id: runId }
644
787
  });
645
- await this.operations.insert({
788
+ await this.#db.insert({
646
789
  tableName: storage.TABLE_WORKFLOW_SNAPSHOT,
647
790
  record: {
648
791
  workflow_name: workflowName,
@@ -658,7 +801,7 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
658
801
  workflowName,
659
802
  runId
660
803
  }) {
661
- const row = await this.operations.load({
804
+ const row = await this.#db.load({
662
805
  tableName: storage.TABLE_WORKFLOW_SNAPSHOT,
663
806
  keys: { workflow_name: workflowName, run_id: runId }
664
807
  });
@@ -667,7 +810,7 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
667
810
  }
668
811
  async listWorkflowRuns(args = {}) {
669
812
  const { workflowName, fromDate, toDate, perPage, page, resourceId, status } = args;
670
- let rows = await this.operations.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, void 0);
813
+ let rows = await this.#db.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, void 0);
671
814
  if (workflowName) rows = rows.filter((run) => run.workflow_name === workflowName);
672
815
  if (resourceId) rows = rows.filter((run) => run.resourceId === resourceId);
673
816
  if (fromDate) rows = rows.filter((run) => new Date(run.createdAt).getTime() >= fromDate.getTime());
@@ -699,7 +842,7 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
699
842
  runId,
700
843
  workflowName
701
844
  }) {
702
- const runs = await this.operations.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, void 0);
845
+ const runs = await this.#db.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, void 0);
703
846
  const match = runs.find((run) => run.run_id === runId && (!workflowName || run.workflow_name === workflowName));
704
847
  if (!match) return null;
705
848
  return {
@@ -711,8 +854,11 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
711
854
  resourceId: match.resourceId
712
855
  };
713
856
  }
857
+ async deleteWorkflowRunById({ runId, workflowName }) {
858
+ await this.#db.deleteMany(storage.TABLE_WORKFLOW_SNAPSHOT, [`${workflowName}-${runId}`]);
859
+ }
714
860
  async getRun(workflowName, runId) {
715
- const runs = await this.operations.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, [
861
+ const runs = await this.#db.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, [
716
862
  { field: "workflow_name", value: workflowName }
717
863
  ]);
718
864
  return runs.find((run) => run.run_id === runId) ?? null;
@@ -739,251 +885,25 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
739
885
  return JSON.parse(JSON.stringify(run.snapshot));
740
886
  }
741
887
  };
742
- var StoreOperationsConvex = class extends storage.StoreOperations {
743
- constructor(client) {
744
- super();
745
- this.client = client;
746
- }
747
- async hasColumn(_table, _column) {
748
- return true;
749
- }
750
- async createTable(_args) {
751
- }
752
- async clearTable({ tableName }) {
753
- let hasMore = true;
754
- while (hasMore) {
755
- const response = await this.client.callStorageRaw({
756
- op: "clearTable",
757
- tableName
758
- });
759
- hasMore = response.hasMore ?? false;
760
- }
761
- }
762
- async dropTable({ tableName }) {
763
- let hasMore = true;
764
- while (hasMore) {
765
- const response = await this.client.callStorageRaw({
766
- op: "dropTable",
767
- tableName
768
- });
769
- hasMore = response.hasMore ?? false;
770
- }
771
- }
772
- async alterTable(_args) {
773
- }
774
- async insert({ tableName, record }) {
775
- await this.client.callStorage({
776
- op: "insert",
777
- tableName,
778
- record: this.normalizeRecord(tableName, record)
779
- });
780
- }
781
- async batchInsert({ tableName, records }) {
782
- if (records.length === 0) return;
783
- await this.client.callStorage({
784
- op: "batchInsert",
785
- tableName,
786
- records: records.map((record) => this.normalizeRecord(tableName, record))
787
- });
788
- }
789
- async load({ tableName, keys }) {
790
- const result = await this.client.callStorage({
791
- op: "load",
792
- tableName,
793
- keys
794
- });
795
- return result;
796
- }
797
- async queryTable(tableName, filters) {
798
- return this.client.callStorage({
799
- op: "queryTable",
800
- tableName,
801
- filters
802
- });
803
- }
804
- async deleteMany(tableName, ids) {
805
- if (ids.length === 0) return;
806
- await this.client.callStorage({
807
- op: "deleteMany",
808
- tableName,
809
- ids
810
- });
811
- }
812
- normalizeRecord(tableName, record) {
813
- const normalized = { ...record };
814
- if (tableName === storage.TABLE_WORKFLOW_SNAPSHOT && !normalized.id) {
815
- const runId = normalized.run_id || normalized.runId;
816
- const workflowName = normalized.workflow_name || normalized.workflowName;
817
- normalized.id = workflowName ? `${workflowName}-${runId}` : runId;
818
- }
819
- if (!normalized.id) {
820
- normalized.id = crypto__default.default.randomUUID();
821
- }
822
- for (const [key, value] of Object.entries(normalized)) {
823
- if (value instanceof Date) {
824
- normalized[key] = value.toISOString();
825
- }
826
- }
827
- return normalized;
828
- }
829
- };
830
888
 
831
889
  // src/storage/index.ts
832
- var ConvexStore = class extends storage.MastraStorage {
833
- operations;
834
- memory;
835
- workflows;
836
- scores;
890
+ var isClientConfig = (config) => {
891
+ return "client" in config;
892
+ };
893
+ var ConvexStore = class extends storage.MastraCompositeStore {
837
894
  constructor(config) {
838
895
  super({ id: config.id, name: config.name ?? "ConvexStore", disableInit: config.disableInit });
839
- const client = new ConvexAdminClient(config);
840
- this.operations = new StoreOperationsConvex(client);
841
- this.memory = new MemoryConvex(this.operations);
842
- this.workflows = new WorkflowsConvex(this.operations);
843
- this.scores = new ScoresConvex(this.operations);
896
+ const client = isClientConfig(config) ? config.client : new ConvexAdminClient(config);
897
+ const domainConfig = { client };
898
+ const memory = new MemoryConvex(domainConfig);
899
+ const workflows = new WorkflowsConvex(domainConfig);
900
+ const scores = new ScoresConvex(domainConfig);
844
901
  this.stores = {
845
- operations: this.operations,
846
- memory: this.memory,
847
- workflows: this.workflows,
848
- scores: this.scores
849
- };
850
- }
851
- get supports() {
852
- return {
853
- selectByIncludeResourceScope: true,
854
- resourceWorkingMemory: true,
855
- hasColumn: false,
856
- createTable: false,
857
- deleteMessages: true,
858
- observabilityInstance: false,
859
- listScoresBySpan: false
902
+ memory,
903
+ workflows,
904
+ scores
860
905
  };
861
906
  }
862
- async createTable(_args) {
863
- }
864
- async clearTable({ tableName }) {
865
- await this.operations.clearTable({ tableName });
866
- }
867
- async dropTable({ tableName }) {
868
- await this.operations.dropTable({ tableName });
869
- }
870
- async alterTable(_args) {
871
- }
872
- async insert({ tableName, record }) {
873
- await this.operations.insert({ tableName, record });
874
- }
875
- async batchInsert({ tableName, records }) {
876
- await this.operations.batchInsert({ tableName, records });
877
- }
878
- async load({ tableName, keys }) {
879
- return this.operations.load({ tableName, keys });
880
- }
881
- async getThreadById({ threadId }) {
882
- return this.memory.getThreadById({ threadId });
883
- }
884
- async saveThread({ thread }) {
885
- return this.memory.saveThread({ thread });
886
- }
887
- async updateThread({
888
- id,
889
- title,
890
- metadata
891
- }) {
892
- return this.memory.updateThread({ id, title, metadata });
893
- }
894
- async deleteThread({ threadId }) {
895
- await this.memory.deleteThread({ threadId });
896
- }
897
- async listMessages(args) {
898
- return this.memory.listMessages(args);
899
- }
900
- async listMessagesById({ messageIds }) {
901
- return this.memory.listMessagesById({ messageIds });
902
- }
903
- async saveMessages(args) {
904
- return this.memory.saveMessages(args);
905
- }
906
- async updateMessages({
907
- messages
908
- }) {
909
- return this.memory.updateMessages({ messages });
910
- }
911
- async deleteMessages(messageIds) {
912
- await this.memory.deleteMessages(messageIds);
913
- }
914
- async listThreadsByResourceId(args) {
915
- return this.memory.listThreadsByResourceId(args);
916
- }
917
- async getResourceById({ resourceId }) {
918
- return this.memory.getResourceById({ resourceId });
919
- }
920
- async saveResource({ resource }) {
921
- return this.memory.saveResource({ resource });
922
- }
923
- async updateResource({
924
- resourceId,
925
- workingMemory,
926
- metadata
927
- }) {
928
- return this.memory.updateResource({ resourceId, workingMemory, metadata });
929
- }
930
- async updateWorkflowResults(params) {
931
- return this.workflows.updateWorkflowResults(params);
932
- }
933
- async updateWorkflowState(params) {
934
- return this.workflows.updateWorkflowState(params);
935
- }
936
- async persistWorkflowSnapshot({
937
- workflowName,
938
- runId,
939
- resourceId,
940
- snapshot
941
- }) {
942
- await this.workflows.persistWorkflowSnapshot({ workflowName, runId, resourceId, snapshot });
943
- }
944
- async loadWorkflowSnapshot({
945
- workflowName,
946
- runId
947
- }) {
948
- return this.workflows.loadWorkflowSnapshot({ workflowName, runId });
949
- }
950
- async listWorkflowRuns(args) {
951
- return this.workflows.listWorkflowRuns(args);
952
- }
953
- async getWorkflowRunById({
954
- runId,
955
- workflowName
956
- }) {
957
- return this.workflows.getWorkflowRunById({ runId, workflowName });
958
- }
959
- async getScoreById({ id }) {
960
- return this.scores.getScoreById({ id });
961
- }
962
- async saveScore(score) {
963
- return this.scores.saveScore(score);
964
- }
965
- async listScoresByScorerId({
966
- scorerId,
967
- pagination,
968
- entityId,
969
- entityType,
970
- source
971
- }) {
972
- return this.scores.listScoresByScorerId({ scorerId, pagination, entityId, entityType, source });
973
- }
974
- async listScoresByRunId({
975
- runId,
976
- pagination
977
- }) {
978
- return this.scores.listScoresByRunId({ runId, pagination });
979
- }
980
- async listScoresByEntityId({
981
- entityId,
982
- entityType,
983
- pagination
984
- }) {
985
- return this.scores.listScoresByEntityId({ entityId, entityType, pagination });
986
- }
987
907
  };
988
908
  var INDEX_METADATA_TABLE = "mastra_vector_indexes";
989
909
  var ConvexVector = class extends vector.MastraVector {
@@ -1288,61 +1208,61 @@ function cosineSimilarity(a, b) {
1288
1208
  return dot / (Math.sqrt(magA) * Math.sqrt(magB));
1289
1209
  }
1290
1210
 
1211
+ Object.defineProperty(exports, "mastraStorage", {
1212
+ enumerable: true,
1213
+ get: function () { return chunkBKVR7SL7_cjs.mastraStorage; }
1214
+ });
1291
1215
  Object.defineProperty(exports, "TABLE_MESSAGES", {
1292
1216
  enumerable: true,
1293
- get: function () { return chunkQKN2PWR2_cjs.TABLE_MESSAGES; }
1217
+ get: function () { return chunkH5QJE733_cjs.TABLE_MESSAGES; }
1294
1218
  });
1295
1219
  Object.defineProperty(exports, "TABLE_RESOURCES", {
1296
1220
  enumerable: true,
1297
- get: function () { return chunkQKN2PWR2_cjs.TABLE_RESOURCES; }
1221
+ get: function () { return chunkH5QJE733_cjs.TABLE_RESOURCES; }
1298
1222
  });
1299
1223
  Object.defineProperty(exports, "TABLE_SCORERS", {
1300
1224
  enumerable: true,
1301
- get: function () { return chunkQKN2PWR2_cjs.TABLE_SCORERS; }
1225
+ get: function () { return chunkH5QJE733_cjs.TABLE_SCORERS; }
1302
1226
  });
1303
1227
  Object.defineProperty(exports, "TABLE_THREADS", {
1304
1228
  enumerable: true,
1305
- get: function () { return chunkQKN2PWR2_cjs.TABLE_THREADS; }
1229
+ get: function () { return chunkH5QJE733_cjs.TABLE_THREADS; }
1306
1230
  });
1307
1231
  Object.defineProperty(exports, "TABLE_WORKFLOW_SNAPSHOT", {
1308
1232
  enumerable: true,
1309
- get: function () { return chunkQKN2PWR2_cjs.TABLE_WORKFLOW_SNAPSHOT; }
1233
+ get: function () { return chunkH5QJE733_cjs.TABLE_WORKFLOW_SNAPSHOT; }
1310
1234
  });
1311
1235
  Object.defineProperty(exports, "mastraDocumentsTable", {
1312
1236
  enumerable: true,
1313
- get: function () { return chunkQKN2PWR2_cjs.mastraDocumentsTable; }
1237
+ get: function () { return chunkH5QJE733_cjs.mastraDocumentsTable; }
1314
1238
  });
1315
1239
  Object.defineProperty(exports, "mastraMessagesTable", {
1316
1240
  enumerable: true,
1317
- get: function () { return chunkQKN2PWR2_cjs.mastraMessagesTable; }
1241
+ get: function () { return chunkH5QJE733_cjs.mastraMessagesTable; }
1318
1242
  });
1319
1243
  Object.defineProperty(exports, "mastraResourcesTable", {
1320
1244
  enumerable: true,
1321
- get: function () { return chunkQKN2PWR2_cjs.mastraResourcesTable; }
1245
+ get: function () { return chunkH5QJE733_cjs.mastraResourcesTable; }
1322
1246
  });
1323
1247
  Object.defineProperty(exports, "mastraScoresTable", {
1324
1248
  enumerable: true,
1325
- get: function () { return chunkQKN2PWR2_cjs.mastraScoresTable; }
1326
- });
1327
- Object.defineProperty(exports, "mastraStorage", {
1328
- enumerable: true,
1329
- get: function () { return chunkQKN2PWR2_cjs.mastraStorage; }
1249
+ get: function () { return chunkH5QJE733_cjs.mastraScoresTable; }
1330
1250
  });
1331
1251
  Object.defineProperty(exports, "mastraThreadsTable", {
1332
1252
  enumerable: true,
1333
- get: function () { return chunkQKN2PWR2_cjs.mastraThreadsTable; }
1253
+ get: function () { return chunkH5QJE733_cjs.mastraThreadsTable; }
1334
1254
  });
1335
1255
  Object.defineProperty(exports, "mastraVectorIndexesTable", {
1336
1256
  enumerable: true,
1337
- get: function () { return chunkQKN2PWR2_cjs.mastraVectorIndexesTable; }
1257
+ get: function () { return chunkH5QJE733_cjs.mastraVectorIndexesTable; }
1338
1258
  });
1339
1259
  Object.defineProperty(exports, "mastraVectorsTable", {
1340
1260
  enumerable: true,
1341
- get: function () { return chunkQKN2PWR2_cjs.mastraVectorsTable; }
1261
+ get: function () { return chunkH5QJE733_cjs.mastraVectorsTable; }
1342
1262
  });
1343
1263
  Object.defineProperty(exports, "mastraWorkflowSnapshotsTable", {
1344
1264
  enumerable: true,
1345
- get: function () { return chunkQKN2PWR2_cjs.mastraWorkflowSnapshotsTable; }
1265
+ get: function () { return chunkH5QJE733_cjs.mastraWorkflowSnapshotsTable; }
1346
1266
  });
1347
1267
  exports.ConvexStore = ConvexStore;
1348
1268
  exports.ConvexVector = ConvexVector;