@mastra/convex 0.0.0-feat-add-query-option-to-playground-20251209160219 → 0.0.0-feat-8782-cf-bindings-20260102164434
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 +679 -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 +182 -303
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +166 -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 +57 -0
- package/dist/storage/db/index.d.ts.map +1 -0
- package/dist/storage/domains/{memory.d.ts → memory/index.d.ts} +6 -4
- 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} +9 -13
- package/dist/storage/domains/workflows/index.d.ts.map +1 -0
- package/dist/storage/index.d.ts +54 -157
- package/dist/storage/index.d.ts.map +1 -1
- package/package.json +16 -6
- 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,114 @@ 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 clearTable({ tableName }) {
|
|
94
|
+
let hasMore = true;
|
|
95
|
+
while (hasMore) {
|
|
96
|
+
const response = await this.client.callStorageRaw({
|
|
97
|
+
op: "clearTable",
|
|
98
|
+
tableName
|
|
99
|
+
});
|
|
100
|
+
hasMore = response.hasMore ?? false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async dropTable({ tableName }) {
|
|
104
|
+
let hasMore = true;
|
|
105
|
+
while (hasMore) {
|
|
106
|
+
const response = await this.client.callStorageRaw({
|
|
107
|
+
op: "dropTable",
|
|
108
|
+
tableName
|
|
109
|
+
});
|
|
110
|
+
hasMore = response.hasMore ?? false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async insert({ tableName, record }) {
|
|
114
|
+
await this.client.callStorage({
|
|
115
|
+
op: "insert",
|
|
116
|
+
tableName,
|
|
117
|
+
record: this.normalizeRecord(tableName, record)
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async batchInsert({ tableName, records }) {
|
|
121
|
+
if (records.length === 0) return;
|
|
122
|
+
await this.client.callStorage({
|
|
123
|
+
op: "batchInsert",
|
|
124
|
+
tableName,
|
|
125
|
+
records: records.map((record) => this.normalizeRecord(tableName, record))
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
async load({ tableName, keys }) {
|
|
129
|
+
const result = await this.client.callStorage({
|
|
130
|
+
op: "load",
|
|
131
|
+
tableName,
|
|
132
|
+
keys
|
|
133
|
+
});
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
async queryTable(tableName, filters) {
|
|
137
|
+
return this.client.callStorage({
|
|
138
|
+
op: "queryTable",
|
|
139
|
+
tableName,
|
|
140
|
+
filters
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async deleteMany(tableName, ids) {
|
|
144
|
+
if (ids.length === 0) return;
|
|
145
|
+
await this.client.callStorage({
|
|
146
|
+
op: "deleteMany",
|
|
147
|
+
tableName,
|
|
148
|
+
ids
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
normalizeRecord(tableName, record) {
|
|
152
|
+
const normalized = { ...record };
|
|
153
|
+
if (tableName === storage.TABLE_WORKFLOW_SNAPSHOT && !normalized.id) {
|
|
154
|
+
const runId = normalized.run_id || normalized.runId;
|
|
155
|
+
const workflowName = normalized.workflow_name || normalized.workflowName;
|
|
156
|
+
normalized.id = workflowName ? `${workflowName}-${runId}` : runId;
|
|
157
|
+
}
|
|
158
|
+
if (!normalized.id) {
|
|
159
|
+
normalized.id = crypto__default.default.randomUUID();
|
|
160
|
+
}
|
|
161
|
+
for (const [key, value] of Object.entries(normalized)) {
|
|
162
|
+
if (value instanceof Date) {
|
|
163
|
+
normalized[key] = value.toISOString();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return normalized;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
// src/storage/domains/memory/index.ts
|
|
77
171
|
var MemoryConvex = class extends storage.MemoryStorage {
|
|
78
|
-
|
|
172
|
+
#db;
|
|
173
|
+
constructor(config) {
|
|
79
174
|
super();
|
|
80
|
-
|
|
175
|
+
const client = resolveConvexConfig(config);
|
|
176
|
+
this.#db = new ConvexDB(client);
|
|
177
|
+
}
|
|
178
|
+
async init() {
|
|
179
|
+
}
|
|
180
|
+
async dangerouslyClearAll() {
|
|
181
|
+
await this.#db.clearTable({ tableName: storage.TABLE_THREADS });
|
|
182
|
+
await this.#db.clearTable({ tableName: storage.TABLE_MESSAGES });
|
|
183
|
+
await this.#db.clearTable({ tableName: storage.TABLE_RESOURCES });
|
|
81
184
|
}
|
|
82
185
|
async getThreadById({ threadId }) {
|
|
83
|
-
const row = await this.
|
|
186
|
+
const row = await this.#db.load({
|
|
84
187
|
tableName: storage.TABLE_THREADS,
|
|
85
188
|
keys: { id: threadId }
|
|
86
189
|
});
|
|
@@ -93,7 +196,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
93
196
|
};
|
|
94
197
|
}
|
|
95
198
|
async saveThread({ thread }) {
|
|
96
|
-
await this.
|
|
199
|
+
await this.#db.insert({
|
|
97
200
|
tableName: storage.TABLE_THREADS,
|
|
98
201
|
record: {
|
|
99
202
|
...thread,
|
|
@@ -129,21 +232,21 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
129
232
|
return updated;
|
|
130
233
|
}
|
|
131
234
|
async deleteThread({ threadId }) {
|
|
132
|
-
const messages = await this.
|
|
235
|
+
const messages = await this.#db.queryTable(storage.TABLE_MESSAGES, [
|
|
133
236
|
{ field: "thread_id", value: threadId }
|
|
134
237
|
]);
|
|
135
|
-
await this.
|
|
238
|
+
await this.#db.deleteMany(
|
|
136
239
|
storage.TABLE_MESSAGES,
|
|
137
240
|
messages.map((msg) => msg.id)
|
|
138
241
|
);
|
|
139
|
-
await this.
|
|
242
|
+
await this.#db.deleteMany(storage.TABLE_THREADS, [threadId]);
|
|
140
243
|
}
|
|
141
244
|
async listThreadsByResourceId(args) {
|
|
142
245
|
const { resourceId, page = 0, perPage: perPageInput, orderBy } = args;
|
|
143
246
|
const perPage = storage.normalizePerPage(perPageInput, 100);
|
|
144
247
|
const { field, direction } = this.parseOrderBy(orderBy);
|
|
145
248
|
const { offset, perPage: perPageForResponse } = storage.calculatePagination(page, perPageInput, perPage);
|
|
146
|
-
const rows = await this.
|
|
249
|
+
const rows = await this.#db.queryTable(storage.TABLE_THREADS, [{ field: "resourceId", value: resourceId }]);
|
|
147
250
|
const threads = rows.map((row) => ({
|
|
148
251
|
...row,
|
|
149
252
|
metadata: typeof row.metadata === "string" ? JSON.parse(row.metadata) : row.metadata,
|
|
@@ -186,23 +289,13 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
186
289
|
const { field, direction } = this.parseOrderBy(orderBy, "ASC");
|
|
187
290
|
let rows = [];
|
|
188
291
|
for (const tid of threadIds) {
|
|
189
|
-
const threadRows = await this.
|
|
190
|
-
{ field: "thread_id", value: tid }
|
|
191
|
-
]);
|
|
292
|
+
const threadRows = await this.#db.queryTable(storage.TABLE_MESSAGES, [{ field: "thread_id", value: tid }]);
|
|
192
293
|
rows.push(...threadRows);
|
|
193
294
|
}
|
|
194
295
|
if (resourceId) {
|
|
195
296
|
rows = rows.filter((row) => row.resourceId === resourceId);
|
|
196
297
|
}
|
|
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
|
-
}
|
|
298
|
+
rows = storage.filterByDateRange(rows, (row) => new Date(row.createdAt), filter?.dateRange);
|
|
206
299
|
rows.sort((a, b) => {
|
|
207
300
|
const aValue = field === "createdAt" || field === "updatedAt" ? new Date(a[field]).getTime() : a[field];
|
|
208
301
|
const bValue = field === "createdAt" || field === "updatedAt" ? new Date(b[field]).getTime() : b[field];
|
|
@@ -232,14 +325,14 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
232
325
|
}
|
|
233
326
|
}
|
|
234
327
|
if (!target) {
|
|
235
|
-
const messageRows = await this.
|
|
328
|
+
const messageRows = await this.#db.queryTable(storage.TABLE_MESSAGES, [
|
|
236
329
|
{ field: "id", value: includeItem.id }
|
|
237
330
|
]);
|
|
238
331
|
if (messageRows.length > 0) {
|
|
239
332
|
target = messageRows[0];
|
|
240
333
|
targetThreadId = target.thread_id;
|
|
241
334
|
if (targetThreadId && !threadMessagesCache.has(targetThreadId)) {
|
|
242
|
-
const otherThreadRows = await this.
|
|
335
|
+
const otherThreadRows = await this.#db.queryTable(storage.TABLE_MESSAGES, [
|
|
243
336
|
{ field: "thread_id", value: targetThreadId }
|
|
244
337
|
]);
|
|
245
338
|
threadMessagesCache.set(targetThreadId, otherThreadRows);
|
|
@@ -282,7 +375,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
282
375
|
if (messageIds.length === 0) {
|
|
283
376
|
return { messages: [] };
|
|
284
377
|
}
|
|
285
|
-
const rows = await this.
|
|
378
|
+
const rows = await this.#db.queryTable(storage.TABLE_MESSAGES, void 0);
|
|
286
379
|
const filtered = rows.filter((row) => messageIds.includes(row.id)).map((row) => this.parseStoredMessage(row));
|
|
287
380
|
const list = new agent.MessageList().add(filtered, "memory");
|
|
288
381
|
return { messages: list.get.all.db() };
|
|
@@ -307,7 +400,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
307
400
|
resourceId: message.resourceId
|
|
308
401
|
};
|
|
309
402
|
});
|
|
310
|
-
await this.
|
|
403
|
+
await this.#db.batchInsert({
|
|
311
404
|
tableName: storage.TABLE_MESSAGES,
|
|
312
405
|
records: normalized
|
|
313
406
|
});
|
|
@@ -316,7 +409,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
316
409
|
for (const threadId of threadIds) {
|
|
317
410
|
const thread = await this.getThreadById({ threadId });
|
|
318
411
|
if (thread) {
|
|
319
|
-
await this.
|
|
412
|
+
await this.#db.insert({
|
|
320
413
|
tableName: storage.TABLE_THREADS,
|
|
321
414
|
record: {
|
|
322
415
|
...thread,
|
|
@@ -335,7 +428,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
335
428
|
messages
|
|
336
429
|
}) {
|
|
337
430
|
if (messages.length === 0) return [];
|
|
338
|
-
const existing = await this.
|
|
431
|
+
const existing = await this.#db.queryTable(storage.TABLE_MESSAGES, void 0);
|
|
339
432
|
const updated = [];
|
|
340
433
|
const affectedThreadIds = /* @__PURE__ */ new Set();
|
|
341
434
|
for (const update of messages) {
|
|
@@ -364,7 +457,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
364
457
|
};
|
|
365
458
|
current.content = JSON.stringify(mergedContent);
|
|
366
459
|
}
|
|
367
|
-
await this.
|
|
460
|
+
await this.#db.insert({
|
|
368
461
|
tableName: storage.TABLE_MESSAGES,
|
|
369
462
|
record: current
|
|
370
463
|
});
|
|
@@ -374,7 +467,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
374
467
|
for (const threadId of affectedThreadIds) {
|
|
375
468
|
const thread = await this.getThreadById({ threadId });
|
|
376
469
|
if (thread) {
|
|
377
|
-
await this.
|
|
470
|
+
await this.#db.insert({
|
|
378
471
|
tableName: storage.TABLE_THREADS,
|
|
379
472
|
record: {
|
|
380
473
|
...thread,
|
|
@@ -389,7 +482,7 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
389
482
|
return updated;
|
|
390
483
|
}
|
|
391
484
|
async deleteMessages(messageIds) {
|
|
392
|
-
await this.
|
|
485
|
+
await this.#db.deleteMany(storage.TABLE_MESSAGES, messageIds);
|
|
393
486
|
}
|
|
394
487
|
async saveResource({ resource }) {
|
|
395
488
|
const record = {
|
|
@@ -400,14 +493,14 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
400
493
|
if (resource.metadata !== void 0) {
|
|
401
494
|
record.metadata = resource.metadata;
|
|
402
495
|
}
|
|
403
|
-
await this.
|
|
496
|
+
await this.#db.insert({
|
|
404
497
|
tableName: storage.TABLE_RESOURCES,
|
|
405
498
|
record
|
|
406
499
|
});
|
|
407
500
|
return resource;
|
|
408
501
|
}
|
|
409
502
|
async getResourceById({ resourceId }) {
|
|
410
|
-
const record = await this.
|
|
503
|
+
const record = await this.#db.load({
|
|
411
504
|
tableName: storage.TABLE_RESOURCES,
|
|
412
505
|
keys: { id: resourceId }
|
|
413
506
|
});
|
|
@@ -493,12 +586,19 @@ var MemoryConvex = class extends storage.MemoryStorage {
|
|
|
493
586
|
}
|
|
494
587
|
};
|
|
495
588
|
var ScoresConvex = class extends storage.ScoresStorage {
|
|
496
|
-
|
|
589
|
+
#db;
|
|
590
|
+
constructor(config) {
|
|
497
591
|
super();
|
|
498
|
-
|
|
592
|
+
const client = resolveConvexConfig(config);
|
|
593
|
+
this.#db = new ConvexDB(client);
|
|
594
|
+
}
|
|
595
|
+
async init() {
|
|
596
|
+
}
|
|
597
|
+
async dangerouslyClearAll() {
|
|
598
|
+
await this.#db.clearTable({ tableName: storage.TABLE_SCORERS });
|
|
499
599
|
}
|
|
500
600
|
async getScoreById({ id }) {
|
|
501
|
-
const row = await this.
|
|
601
|
+
const row = await this.#db.load({
|
|
502
602
|
tableName: storage.TABLE_SCORERS,
|
|
503
603
|
keys: { id }
|
|
504
604
|
});
|
|
@@ -512,7 +612,7 @@ var ScoresConvex = class extends storage.ScoresStorage {
|
|
|
512
612
|
createdAt: now.toISOString(),
|
|
513
613
|
updatedAt: now.toISOString()
|
|
514
614
|
};
|
|
515
|
-
await this.
|
|
615
|
+
await this.#db.insert({
|
|
516
616
|
tableName: storage.TABLE_SCORERS,
|
|
517
617
|
record
|
|
518
618
|
});
|
|
@@ -563,7 +663,7 @@ var ScoresConvex = class extends storage.ScoresStorage {
|
|
|
563
663
|
new Error("page must be >= 0")
|
|
564
664
|
);
|
|
565
665
|
}
|
|
566
|
-
const rows = await this.
|
|
666
|
+
const rows = await this.#db.queryTable(storage.TABLE_SCORERS, void 0);
|
|
567
667
|
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
668
|
const { perPage, page } = pagination;
|
|
569
669
|
const perPageValue = perPage === false ? filtered.length : perPage;
|
|
@@ -589,9 +689,16 @@ var ScoresConvex = class extends storage.ScoresStorage {
|
|
|
589
689
|
}
|
|
590
690
|
};
|
|
591
691
|
var WorkflowsConvex = class extends storage.WorkflowsStorage {
|
|
592
|
-
|
|
692
|
+
#db;
|
|
693
|
+
constructor(config) {
|
|
593
694
|
super();
|
|
594
|
-
|
|
695
|
+
const client = resolveConvexConfig(config);
|
|
696
|
+
this.#db = new ConvexDB(client);
|
|
697
|
+
}
|
|
698
|
+
async init() {
|
|
699
|
+
}
|
|
700
|
+
async dangerouslyClearAll() {
|
|
701
|
+
await this.#db.clearTable({ tableName: storage.TABLE_WORKFLOW_SNAPSHOT });
|
|
595
702
|
}
|
|
596
703
|
async updateWorkflowResults({
|
|
597
704
|
workflowName,
|
|
@@ -638,11 +745,11 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
|
|
|
638
745
|
snapshot
|
|
639
746
|
}) {
|
|
640
747
|
const now = /* @__PURE__ */ new Date();
|
|
641
|
-
const existing = await this.
|
|
748
|
+
const existing = await this.#db.load({
|
|
642
749
|
tableName: storage.TABLE_WORKFLOW_SNAPSHOT,
|
|
643
750
|
keys: { workflow_name: workflowName, run_id: runId }
|
|
644
751
|
});
|
|
645
|
-
await this.
|
|
752
|
+
await this.#db.insert({
|
|
646
753
|
tableName: storage.TABLE_WORKFLOW_SNAPSHOT,
|
|
647
754
|
record: {
|
|
648
755
|
workflow_name: workflowName,
|
|
@@ -658,7 +765,7 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
|
|
|
658
765
|
workflowName,
|
|
659
766
|
runId
|
|
660
767
|
}) {
|
|
661
|
-
const row = await this.
|
|
768
|
+
const row = await this.#db.load({
|
|
662
769
|
tableName: storage.TABLE_WORKFLOW_SNAPSHOT,
|
|
663
770
|
keys: { workflow_name: workflowName, run_id: runId }
|
|
664
771
|
});
|
|
@@ -667,7 +774,7 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
|
|
|
667
774
|
}
|
|
668
775
|
async listWorkflowRuns(args = {}) {
|
|
669
776
|
const { workflowName, fromDate, toDate, perPage, page, resourceId, status } = args;
|
|
670
|
-
let rows = await this.
|
|
777
|
+
let rows = await this.#db.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, void 0);
|
|
671
778
|
if (workflowName) rows = rows.filter((run) => run.workflow_name === workflowName);
|
|
672
779
|
if (resourceId) rows = rows.filter((run) => run.resourceId === resourceId);
|
|
673
780
|
if (fromDate) rows = rows.filter((run) => new Date(run.createdAt).getTime() >= fromDate.getTime());
|
|
@@ -699,7 +806,7 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
|
|
|
699
806
|
runId,
|
|
700
807
|
workflowName
|
|
701
808
|
}) {
|
|
702
|
-
const runs = await this.
|
|
809
|
+
const runs = await this.#db.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, void 0);
|
|
703
810
|
const match = runs.find((run) => run.run_id === runId && (!workflowName || run.workflow_name === workflowName));
|
|
704
811
|
if (!match) return null;
|
|
705
812
|
return {
|
|
@@ -712,10 +819,10 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
|
|
|
712
819
|
};
|
|
713
820
|
}
|
|
714
821
|
async deleteWorkflowRunById({ runId, workflowName }) {
|
|
715
|
-
await this.
|
|
822
|
+
await this.#db.deleteMany(storage.TABLE_WORKFLOW_SNAPSHOT, [`${workflowName}-${runId}`]);
|
|
716
823
|
}
|
|
717
824
|
async getRun(workflowName, runId) {
|
|
718
|
-
const runs = await this.
|
|
825
|
+
const runs = await this.#db.queryTable(storage.TABLE_WORKFLOW_SNAPSHOT, [
|
|
719
826
|
{ field: "workflow_name", value: workflowName }
|
|
720
827
|
]);
|
|
721
828
|
return runs.find((run) => run.run_id === runId) ?? null;
|
|
@@ -742,254 +849,26 @@ var WorkflowsConvex = class extends storage.WorkflowsStorage {
|
|
|
742
849
|
return JSON.parse(JSON.stringify(run.snapshot));
|
|
743
850
|
}
|
|
744
851
|
};
|
|
745
|
-
var StoreOperationsConvex = class extends storage.StoreOperations {
|
|
746
|
-
constructor(client) {
|
|
747
|
-
super();
|
|
748
|
-
this.client = client;
|
|
749
|
-
}
|
|
750
|
-
async hasColumn(_table, _column) {
|
|
751
|
-
return true;
|
|
752
|
-
}
|
|
753
|
-
async createTable(_args) {
|
|
754
|
-
}
|
|
755
|
-
async clearTable({ tableName }) {
|
|
756
|
-
let hasMore = true;
|
|
757
|
-
while (hasMore) {
|
|
758
|
-
const response = await this.client.callStorageRaw({
|
|
759
|
-
op: "clearTable",
|
|
760
|
-
tableName
|
|
761
|
-
});
|
|
762
|
-
hasMore = response.hasMore ?? false;
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
async dropTable({ tableName }) {
|
|
766
|
-
let hasMore = true;
|
|
767
|
-
while (hasMore) {
|
|
768
|
-
const response = await this.client.callStorageRaw({
|
|
769
|
-
op: "dropTable",
|
|
770
|
-
tableName
|
|
771
|
-
});
|
|
772
|
-
hasMore = response.hasMore ?? false;
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
async alterTable(_args) {
|
|
776
|
-
}
|
|
777
|
-
async insert({ tableName, record }) {
|
|
778
|
-
await this.client.callStorage({
|
|
779
|
-
op: "insert",
|
|
780
|
-
tableName,
|
|
781
|
-
record: this.normalizeRecord(tableName, record)
|
|
782
|
-
});
|
|
783
|
-
}
|
|
784
|
-
async batchInsert({ tableName, records }) {
|
|
785
|
-
if (records.length === 0) return;
|
|
786
|
-
await this.client.callStorage({
|
|
787
|
-
op: "batchInsert",
|
|
788
|
-
tableName,
|
|
789
|
-
records: records.map((record) => this.normalizeRecord(tableName, record))
|
|
790
|
-
});
|
|
791
|
-
}
|
|
792
|
-
async load({ tableName, keys }) {
|
|
793
|
-
const result = await this.client.callStorage({
|
|
794
|
-
op: "load",
|
|
795
|
-
tableName,
|
|
796
|
-
keys
|
|
797
|
-
});
|
|
798
|
-
return result;
|
|
799
|
-
}
|
|
800
|
-
async queryTable(tableName, filters) {
|
|
801
|
-
return this.client.callStorage({
|
|
802
|
-
op: "queryTable",
|
|
803
|
-
tableName,
|
|
804
|
-
filters
|
|
805
|
-
});
|
|
806
|
-
}
|
|
807
|
-
async deleteMany(tableName, ids) {
|
|
808
|
-
if (ids.length === 0) return;
|
|
809
|
-
await this.client.callStorage({
|
|
810
|
-
op: "deleteMany",
|
|
811
|
-
tableName,
|
|
812
|
-
ids
|
|
813
|
-
});
|
|
814
|
-
}
|
|
815
|
-
normalizeRecord(tableName, record) {
|
|
816
|
-
const normalized = { ...record };
|
|
817
|
-
if (tableName === storage.TABLE_WORKFLOW_SNAPSHOT && !normalized.id) {
|
|
818
|
-
const runId = normalized.run_id || normalized.runId;
|
|
819
|
-
const workflowName = normalized.workflow_name || normalized.workflowName;
|
|
820
|
-
normalized.id = workflowName ? `${workflowName}-${runId}` : runId;
|
|
821
|
-
}
|
|
822
|
-
if (!normalized.id) {
|
|
823
|
-
normalized.id = crypto__default.default.randomUUID();
|
|
824
|
-
}
|
|
825
|
-
for (const [key, value] of Object.entries(normalized)) {
|
|
826
|
-
if (value instanceof Date) {
|
|
827
|
-
normalized[key] = value.toISOString();
|
|
828
|
-
}
|
|
829
|
-
}
|
|
830
|
-
return normalized;
|
|
831
|
-
}
|
|
832
|
-
};
|
|
833
852
|
|
|
834
853
|
// src/storage/index.ts
|
|
854
|
+
var isClientConfig = (config) => {
|
|
855
|
+
return "client" in config;
|
|
856
|
+
};
|
|
835
857
|
var ConvexStore = class extends storage.MastraStorage {
|
|
836
|
-
|
|
837
|
-
memory;
|
|
838
|
-
workflows;
|
|
839
|
-
scores;
|
|
858
|
+
stores = {};
|
|
840
859
|
constructor(config) {
|
|
841
860
|
super({ id: config.id, name: config.name ?? "ConvexStore", disableInit: config.disableInit });
|
|
842
|
-
const client = new ConvexAdminClient(config);
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
861
|
+
const client = isClientConfig(config) ? config.client : new ConvexAdminClient(config);
|
|
862
|
+
const domainConfig = { client };
|
|
863
|
+
const memory = new MemoryConvex(domainConfig);
|
|
864
|
+
const workflows = new WorkflowsConvex(domainConfig);
|
|
865
|
+
const scores = new ScoresConvex(domainConfig);
|
|
847
866
|
this.stores = {
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
scores: this.scores
|
|
867
|
+
memory,
|
|
868
|
+
workflows,
|
|
869
|
+
scores
|
|
852
870
|
};
|
|
853
871
|
}
|
|
854
|
-
get supports() {
|
|
855
|
-
return {
|
|
856
|
-
selectByIncludeResourceScope: true,
|
|
857
|
-
resourceWorkingMemory: true,
|
|
858
|
-
hasColumn: false,
|
|
859
|
-
createTable: false,
|
|
860
|
-
deleteMessages: true,
|
|
861
|
-
observabilityInstance: false,
|
|
862
|
-
listScoresBySpan: false
|
|
863
|
-
};
|
|
864
|
-
}
|
|
865
|
-
async createTable(_args) {
|
|
866
|
-
}
|
|
867
|
-
async clearTable({ tableName }) {
|
|
868
|
-
await this.operations.clearTable({ tableName });
|
|
869
|
-
}
|
|
870
|
-
async dropTable({ tableName }) {
|
|
871
|
-
await this.operations.dropTable({ tableName });
|
|
872
|
-
}
|
|
873
|
-
async alterTable(_args) {
|
|
874
|
-
}
|
|
875
|
-
async insert({ tableName, record }) {
|
|
876
|
-
await this.operations.insert({ tableName, record });
|
|
877
|
-
}
|
|
878
|
-
async batchInsert({ tableName, records }) {
|
|
879
|
-
await this.operations.batchInsert({ tableName, records });
|
|
880
|
-
}
|
|
881
|
-
async load({ tableName, keys }) {
|
|
882
|
-
return this.operations.load({ tableName, keys });
|
|
883
|
-
}
|
|
884
|
-
async getThreadById({ threadId }) {
|
|
885
|
-
return this.memory.getThreadById({ threadId });
|
|
886
|
-
}
|
|
887
|
-
async saveThread({ thread }) {
|
|
888
|
-
return this.memory.saveThread({ thread });
|
|
889
|
-
}
|
|
890
|
-
async updateThread({
|
|
891
|
-
id,
|
|
892
|
-
title,
|
|
893
|
-
metadata
|
|
894
|
-
}) {
|
|
895
|
-
return this.memory.updateThread({ id, title, metadata });
|
|
896
|
-
}
|
|
897
|
-
async deleteThread({ threadId }) {
|
|
898
|
-
await this.memory.deleteThread({ threadId });
|
|
899
|
-
}
|
|
900
|
-
async listMessages(args) {
|
|
901
|
-
return this.memory.listMessages(args);
|
|
902
|
-
}
|
|
903
|
-
async listMessagesById({ messageIds }) {
|
|
904
|
-
return this.memory.listMessagesById({ messageIds });
|
|
905
|
-
}
|
|
906
|
-
async saveMessages(args) {
|
|
907
|
-
return this.memory.saveMessages(args);
|
|
908
|
-
}
|
|
909
|
-
async updateMessages({
|
|
910
|
-
messages
|
|
911
|
-
}) {
|
|
912
|
-
return this.memory.updateMessages({ messages });
|
|
913
|
-
}
|
|
914
|
-
async deleteMessages(messageIds) {
|
|
915
|
-
await this.memory.deleteMessages(messageIds);
|
|
916
|
-
}
|
|
917
|
-
async listThreadsByResourceId(args) {
|
|
918
|
-
return this.memory.listThreadsByResourceId(args);
|
|
919
|
-
}
|
|
920
|
-
async getResourceById({ resourceId }) {
|
|
921
|
-
return this.memory.getResourceById({ resourceId });
|
|
922
|
-
}
|
|
923
|
-
async saveResource({ resource }) {
|
|
924
|
-
return this.memory.saveResource({ resource });
|
|
925
|
-
}
|
|
926
|
-
async updateResource({
|
|
927
|
-
resourceId,
|
|
928
|
-
workingMemory,
|
|
929
|
-
metadata
|
|
930
|
-
}) {
|
|
931
|
-
return this.memory.updateResource({ resourceId, workingMemory, metadata });
|
|
932
|
-
}
|
|
933
|
-
async updateWorkflowResults(params) {
|
|
934
|
-
return this.workflows.updateWorkflowResults(params);
|
|
935
|
-
}
|
|
936
|
-
async updateWorkflowState(params) {
|
|
937
|
-
return this.workflows.updateWorkflowState(params);
|
|
938
|
-
}
|
|
939
|
-
async persistWorkflowSnapshot({
|
|
940
|
-
workflowName,
|
|
941
|
-
runId,
|
|
942
|
-
resourceId,
|
|
943
|
-
snapshot
|
|
944
|
-
}) {
|
|
945
|
-
await this.workflows.persistWorkflowSnapshot({ workflowName, runId, resourceId, snapshot });
|
|
946
|
-
}
|
|
947
|
-
async loadWorkflowSnapshot({
|
|
948
|
-
workflowName,
|
|
949
|
-
runId
|
|
950
|
-
}) {
|
|
951
|
-
return this.workflows.loadWorkflowSnapshot({ workflowName, runId });
|
|
952
|
-
}
|
|
953
|
-
async listWorkflowRuns(args) {
|
|
954
|
-
return this.workflows.listWorkflowRuns(args);
|
|
955
|
-
}
|
|
956
|
-
async getWorkflowRunById({
|
|
957
|
-
runId,
|
|
958
|
-
workflowName
|
|
959
|
-
}) {
|
|
960
|
-
return this.workflows.getWorkflowRunById({ runId, workflowName });
|
|
961
|
-
}
|
|
962
|
-
async deleteWorkflowRunById({ runId, workflowName }) {
|
|
963
|
-
return this.workflows.deleteWorkflowRunById({ runId, workflowName });
|
|
964
|
-
}
|
|
965
|
-
async getScoreById({ id }) {
|
|
966
|
-
return this.scores.getScoreById({ id });
|
|
967
|
-
}
|
|
968
|
-
async saveScore(score) {
|
|
969
|
-
return this.scores.saveScore(score);
|
|
970
|
-
}
|
|
971
|
-
async listScoresByScorerId({
|
|
972
|
-
scorerId,
|
|
973
|
-
pagination,
|
|
974
|
-
entityId,
|
|
975
|
-
entityType,
|
|
976
|
-
source
|
|
977
|
-
}) {
|
|
978
|
-
return this.scores.listScoresByScorerId({ scorerId, pagination, entityId, entityType, source });
|
|
979
|
-
}
|
|
980
|
-
async listScoresByRunId({
|
|
981
|
-
runId,
|
|
982
|
-
pagination
|
|
983
|
-
}) {
|
|
984
|
-
return this.scores.listScoresByRunId({ runId, pagination });
|
|
985
|
-
}
|
|
986
|
-
async listScoresByEntityId({
|
|
987
|
-
entityId,
|
|
988
|
-
entityType,
|
|
989
|
-
pagination
|
|
990
|
-
}) {
|
|
991
|
-
return this.scores.listScoresByEntityId({ entityId, entityType, pagination });
|
|
992
|
-
}
|
|
993
872
|
};
|
|
994
873
|
var INDEX_METADATA_TABLE = "mastra_vector_indexes";
|
|
995
874
|
var ConvexVector = class extends vector.MastraVector {
|
|
@@ -1294,61 +1173,61 @@ function cosineSimilarity(a, b) {
|
|
|
1294
1173
|
return dot / (Math.sqrt(magA) * Math.sqrt(magB));
|
|
1295
1174
|
}
|
|
1296
1175
|
|
|
1176
|
+
Object.defineProperty(exports, "mastraStorage", {
|
|
1177
|
+
enumerable: true,
|
|
1178
|
+
get: function () { return chunkBKVR7SL7_cjs.mastraStorage; }
|
|
1179
|
+
});
|
|
1297
1180
|
Object.defineProperty(exports, "TABLE_MESSAGES", {
|
|
1298
1181
|
enumerable: true,
|
|
1299
|
-
get: function () { return
|
|
1182
|
+
get: function () { return chunkH5QJE733_cjs.TABLE_MESSAGES; }
|
|
1300
1183
|
});
|
|
1301
1184
|
Object.defineProperty(exports, "TABLE_RESOURCES", {
|
|
1302
1185
|
enumerable: true,
|
|
1303
|
-
get: function () { return
|
|
1186
|
+
get: function () { return chunkH5QJE733_cjs.TABLE_RESOURCES; }
|
|
1304
1187
|
});
|
|
1305
1188
|
Object.defineProperty(exports, "TABLE_SCORERS", {
|
|
1306
1189
|
enumerable: true,
|
|
1307
|
-
get: function () { return
|
|
1190
|
+
get: function () { return chunkH5QJE733_cjs.TABLE_SCORERS; }
|
|
1308
1191
|
});
|
|
1309
1192
|
Object.defineProperty(exports, "TABLE_THREADS", {
|
|
1310
1193
|
enumerable: true,
|
|
1311
|
-
get: function () { return
|
|
1194
|
+
get: function () { return chunkH5QJE733_cjs.TABLE_THREADS; }
|
|
1312
1195
|
});
|
|
1313
1196
|
Object.defineProperty(exports, "TABLE_WORKFLOW_SNAPSHOT", {
|
|
1314
1197
|
enumerable: true,
|
|
1315
|
-
get: function () { return
|
|
1198
|
+
get: function () { return chunkH5QJE733_cjs.TABLE_WORKFLOW_SNAPSHOT; }
|
|
1316
1199
|
});
|
|
1317
1200
|
Object.defineProperty(exports, "mastraDocumentsTable", {
|
|
1318
1201
|
enumerable: true,
|
|
1319
|
-
get: function () { return
|
|
1202
|
+
get: function () { return chunkH5QJE733_cjs.mastraDocumentsTable; }
|
|
1320
1203
|
});
|
|
1321
1204
|
Object.defineProperty(exports, "mastraMessagesTable", {
|
|
1322
1205
|
enumerable: true,
|
|
1323
|
-
get: function () { return
|
|
1206
|
+
get: function () { return chunkH5QJE733_cjs.mastraMessagesTable; }
|
|
1324
1207
|
});
|
|
1325
1208
|
Object.defineProperty(exports, "mastraResourcesTable", {
|
|
1326
1209
|
enumerable: true,
|
|
1327
|
-
get: function () { return
|
|
1210
|
+
get: function () { return chunkH5QJE733_cjs.mastraResourcesTable; }
|
|
1328
1211
|
});
|
|
1329
1212
|
Object.defineProperty(exports, "mastraScoresTable", {
|
|
1330
1213
|
enumerable: true,
|
|
1331
|
-
get: function () { return
|
|
1332
|
-
});
|
|
1333
|
-
Object.defineProperty(exports, "mastraStorage", {
|
|
1334
|
-
enumerable: true,
|
|
1335
|
-
get: function () { return chunkQKN2PWR2_cjs.mastraStorage; }
|
|
1214
|
+
get: function () { return chunkH5QJE733_cjs.mastraScoresTable; }
|
|
1336
1215
|
});
|
|
1337
1216
|
Object.defineProperty(exports, "mastraThreadsTable", {
|
|
1338
1217
|
enumerable: true,
|
|
1339
|
-
get: function () { return
|
|
1218
|
+
get: function () { return chunkH5QJE733_cjs.mastraThreadsTable; }
|
|
1340
1219
|
});
|
|
1341
1220
|
Object.defineProperty(exports, "mastraVectorIndexesTable", {
|
|
1342
1221
|
enumerable: true,
|
|
1343
|
-
get: function () { return
|
|
1222
|
+
get: function () { return chunkH5QJE733_cjs.mastraVectorIndexesTable; }
|
|
1344
1223
|
});
|
|
1345
1224
|
Object.defineProperty(exports, "mastraVectorsTable", {
|
|
1346
1225
|
enumerable: true,
|
|
1347
|
-
get: function () { return
|
|
1226
|
+
get: function () { return chunkH5QJE733_cjs.mastraVectorsTable; }
|
|
1348
1227
|
});
|
|
1349
1228
|
Object.defineProperty(exports, "mastraWorkflowSnapshotsTable", {
|
|
1350
1229
|
enumerable: true,
|
|
1351
|
-
get: function () { return
|
|
1230
|
+
get: function () { return chunkH5QJE733_cjs.mastraWorkflowSnapshotsTable; }
|
|
1352
1231
|
});
|
|
1353
1232
|
exports.ConvexStore = ConvexStore;
|
|
1354
1233
|
exports.ConvexVector = ConvexVector;
|