@mastra/convex 0.0.0-scorers-logs-20251208123838 → 0.0.0-standard-schema-20260126101119
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.
- package/CHANGELOG.md +901 -5
- package/README.md +1 -1
- package/dist/{chunk-QKN2PWR2.cjs → chunk-BKVR7SL7.cjs} +2 -89
- package/dist/chunk-BKVR7SL7.cjs.map +1 -0
- package/dist/chunk-H5QJE733.cjs +104 -0
- package/dist/chunk-H5QJE733.cjs.map +1 -0
- package/dist/chunk-HXB4DWFE.js +73 -0
- package/dist/chunk-HXB4DWFE.js.map +1 -0
- package/dist/{chunk-NZCHEPNU.js → chunk-KSAPIIEJ.js} +5 -65
- package/dist/chunk-KSAPIIEJ.js.map +1 -0
- package/dist/docs/README.md +32 -0
- package/dist/docs/SKILL.md +46 -0
- package/dist/docs/SOURCE_MAP.json +63 -0
- package/dist/docs/storage/01-reference.md +140 -0
- package/dist/docs/vectors/01-reference.md +240 -0
- package/dist/index.cjs +223 -303
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +207 -287
- package/dist/index.js.map +1 -1
- package/dist/schema.cjs +72 -0
- package/dist/schema.cjs.map +1 -0
- package/dist/{server/schema.d.ts → schema.d.ts} +14 -1
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +3 -0
- package/dist/schema.js.map +1 -0
- package/dist/server/index.cjs +19 -18
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/storage/db/index.d.ts +66 -0
- package/dist/storage/db/index.d.ts.map +1 -0
- package/dist/storage/domains/{memory.d.ts → memory/index.d.ts} +8 -6
- package/dist/storage/domains/memory/index.d.ts.map +1 -0
- package/dist/storage/domains/{scores.d.ts → scores/index.d.ts} +11 -18
- package/dist/storage/domains/scores/index.d.ts.map +1 -0
- package/dist/storage/domains/{workflows.d.ts → workflows/index.d.ts} +13 -13
- package/dist/storage/domains/workflows/index.d.ts.map +1 -0
- package/dist/storage/index.d.ts +56 -155
- package/dist/storage/index.d.ts.map +1 -1
- package/package.json +23 -13
- package/dist/chunk-NZCHEPNU.js.map +0 -1
- package/dist/chunk-QKN2PWR2.cjs.map +0 -1
- package/dist/server/schema.d.ts.map +0 -1
- package/dist/storage/domains/memory.d.ts.map +0 -1
- package/dist/storage/domains/scores.d.ts.map +0 -1
- package/dist/storage/domains/workflows.d.ts.map +0 -1
- package/dist/storage/operations.d.ts +0 -40
- 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
|
|
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
|
-
|
|
185
|
+
#db;
|
|
186
|
+
constructor(config) {
|
|
79
187
|
super();
|
|
80
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
248
|
+
const messages = await this.#db.queryTable(storage.TABLE_MESSAGES, [
|
|
133
249
|
{ field: "thread_id", value: threadId }
|
|
134
250
|
]);
|
|
135
|
-
await this.
|
|
251
|
+
await this.#db.deleteMany(
|
|
136
252
|
storage.TABLE_MESSAGES,
|
|
137
253
|
messages.map((msg) => msg.id)
|
|
138
254
|
);
|
|
139
|
-
await this.
|
|
255
|
+
await this.#db.deleteMany(storage.TABLE_THREADS, [threadId]);
|
|
140
256
|
}
|
|
141
|
-
async
|
|
142
|
-
const {
|
|
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
|
|
147
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
625
|
+
#db;
|
|
626
|
+
constructor(config) {
|
|
497
627
|
super();
|
|
498
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
728
|
+
#db;
|
|
729
|
+
constructor(config) {
|
|
593
730
|
super();
|
|
594
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
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
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
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
|
-
|
|
846
|
-
|
|
847
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1237
|
+
get: function () { return chunkH5QJE733_cjs.mastraDocumentsTable; }
|
|
1314
1238
|
});
|
|
1315
1239
|
Object.defineProperty(exports, "mastraMessagesTable", {
|
|
1316
1240
|
enumerable: true,
|
|
1317
|
-
get: function () { return
|
|
1241
|
+
get: function () { return chunkH5QJE733_cjs.mastraMessagesTable; }
|
|
1318
1242
|
});
|
|
1319
1243
|
Object.defineProperty(exports, "mastraResourcesTable", {
|
|
1320
1244
|
enumerable: true,
|
|
1321
|
-
get: function () { return
|
|
1245
|
+
get: function () { return chunkH5QJE733_cjs.mastraResourcesTable; }
|
|
1322
1246
|
});
|
|
1323
1247
|
Object.defineProperty(exports, "mastraScoresTable", {
|
|
1324
1248
|
enumerable: true,
|
|
1325
|
-
get: function () { return
|
|
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
|
|
1253
|
+
get: function () { return chunkH5QJE733_cjs.mastraThreadsTable; }
|
|
1334
1254
|
});
|
|
1335
1255
|
Object.defineProperty(exports, "mastraVectorIndexesTable", {
|
|
1336
1256
|
enumerable: true,
|
|
1337
|
-
get: function () { return
|
|
1257
|
+
get: function () { return chunkH5QJE733_cjs.mastraVectorIndexesTable; }
|
|
1338
1258
|
});
|
|
1339
1259
|
Object.defineProperty(exports, "mastraVectorsTable", {
|
|
1340
1260
|
enumerable: true,
|
|
1341
|
-
get: function () { return
|
|
1261
|
+
get: function () { return chunkH5QJE733_cjs.mastraVectorsTable; }
|
|
1342
1262
|
});
|
|
1343
1263
|
Object.defineProperty(exports, "mastraWorkflowSnapshotsTable", {
|
|
1344
1264
|
enumerable: true,
|
|
1345
|
-
get: function () { return
|
|
1265
|
+
get: function () { return chunkH5QJE733_cjs.mastraWorkflowSnapshotsTable; }
|
|
1346
1266
|
});
|
|
1347
1267
|
exports.ConvexStore = ConvexStore;
|
|
1348
1268
|
exports.ConvexVector = ConvexVector;
|