@mastra/pg 1.24.0-alpha.3 → 1.24.1-alpha.0
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/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/index.cjs +97 -81
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +97 -81
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/datasets/index.d.ts.map +1 -1
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/v-next/helpers.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -6274,23 +6274,6 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
|
|
|
6274
6274
|
}
|
|
6275
6275
|
async _doUpdateItem(args) {
|
|
6276
6276
|
try {
|
|
6277
|
-
const existing = await this.#getItemById(this.#db.client, { id: args.id });
|
|
6278
|
-
if (!existing) throw new MastraError({
|
|
6279
|
-
id: createStorageErrorId("PG", "UPDATE_ITEM", "NOT_FOUND"),
|
|
6280
|
-
domain: ErrorDomain.STORAGE,
|
|
6281
|
-
category: ErrorCategory.USER,
|
|
6282
|
-
details: { itemId: args.id }
|
|
6283
|
-
});
|
|
6284
|
-
if (existing.datasetId !== args.datasetId) throw new MastraError({
|
|
6285
|
-
id: createStorageErrorId("PG", "UPDATE_ITEM", "DATASET_MISMATCH"),
|
|
6286
|
-
domain: ErrorDomain.STORAGE,
|
|
6287
|
-
category: ErrorCategory.USER,
|
|
6288
|
-
details: {
|
|
6289
|
-
itemId: args.id,
|
|
6290
|
-
expectedDatasetId: args.datasetId,
|
|
6291
|
-
actualDatasetId: existing.datasetId
|
|
6292
|
-
}
|
|
6293
|
-
});
|
|
6294
6277
|
const datasetsTable = getTableName$5({
|
|
6295
6278
|
indexName: TABLE_DATASETS,
|
|
6296
6279
|
schemaName: getSchemaName$5(this.#schema)
|
|
@@ -6306,23 +6289,49 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
|
|
|
6306
6289
|
const versionId = crypto.randomUUID();
|
|
6307
6290
|
const now = /* @__PURE__ */ new Date();
|
|
6308
6291
|
const nowIso = now.toISOString();
|
|
6309
|
-
|
|
6310
|
-
const mergedGroundTruth = args.groundTruth !== void 0 ? args.groundTruth : existing.groundTruth;
|
|
6311
|
-
const mergedExpectedTrajectory = args.expectedTrajectory !== void 0 ? args.expectedTrajectory : existing.expectedTrajectory;
|
|
6312
|
-
const mergedToolMocks = args.toolMocks !== void 0 ? args.toolMocks : existing.toolMocks;
|
|
6313
|
-
const mergedUnmockedToolPolicy = args.unmockedToolPolicy !== void 0 ? args.unmockedToolPolicy : existing.unmockedToolPolicy;
|
|
6314
|
-
const mergedScorerIds = args.scorerIds !== void 0 ? args.scorerIds ?? void 0 : existing.scorerIds;
|
|
6315
|
-
const mergedRequestContext = args.requestContext !== void 0 ? args.requestContext : existing.requestContext;
|
|
6316
|
-
const mergedMetadata = args.metadata !== void 0 ? args.metadata : existing.metadata;
|
|
6317
|
-
const mergedSource = args.source !== void 0 ? args.source : existing.source;
|
|
6318
|
-
let newVersion;
|
|
6319
|
-
let parentOrganizationId = null;
|
|
6320
|
-
let parentProjectId = null;
|
|
6292
|
+
let updated;
|
|
6321
6293
|
await this.#db.client.tx(async (t) => {
|
|
6294
|
+
await t.oneOrNone(`SELECT "id" FROM ${datasetsTable} WHERE "id" = $1 FOR UPDATE`, [args.datasetId]);
|
|
6295
|
+
const existing = await this.#getItemById(t, { id: args.id });
|
|
6296
|
+
if (!existing) throw new MastraError({
|
|
6297
|
+
id: createStorageErrorId("PG", "UPDATE_ITEM", "NOT_FOUND"),
|
|
6298
|
+
domain: ErrorDomain.STORAGE,
|
|
6299
|
+
category: ErrorCategory.USER,
|
|
6300
|
+
details: { itemId: args.id }
|
|
6301
|
+
});
|
|
6302
|
+
if (existing.datasetId !== args.datasetId) throw new MastraError({
|
|
6303
|
+
id: createStorageErrorId("PG", "UPDATE_ITEM", "DATASET_MISMATCH"),
|
|
6304
|
+
domain: ErrorDomain.STORAGE,
|
|
6305
|
+
category: ErrorCategory.USER,
|
|
6306
|
+
details: {
|
|
6307
|
+
itemId: args.id,
|
|
6308
|
+
expectedDatasetId: args.datasetId,
|
|
6309
|
+
actualDatasetId: existing.datasetId
|
|
6310
|
+
}
|
|
6311
|
+
});
|
|
6312
|
+
if (existing.metadata?.__purged === true) throw new MastraError({
|
|
6313
|
+
id: "DATASET_ITEM_PURGED",
|
|
6314
|
+
domain: ErrorDomain.STORAGE,
|
|
6315
|
+
category: ErrorCategory.USER,
|
|
6316
|
+
details: {
|
|
6317
|
+
datasetId: args.datasetId,
|
|
6318
|
+
itemId: args.id
|
|
6319
|
+
},
|
|
6320
|
+
text: `Purged dataset item cannot be updated: ${args.id}`
|
|
6321
|
+
});
|
|
6322
|
+
const mergedInput = args.input !== void 0 ? args.input : existing.input;
|
|
6323
|
+
const mergedGroundTruth = args.groundTruth !== void 0 ? args.groundTruth : existing.groundTruth;
|
|
6324
|
+
const mergedExpectedTrajectory = args.expectedTrajectory !== void 0 ? args.expectedTrajectory : existing.expectedTrajectory;
|
|
6325
|
+
const mergedToolMocks = args.toolMocks !== void 0 ? args.toolMocks : existing.toolMocks;
|
|
6326
|
+
const mergedUnmockedToolPolicy = args.unmockedToolPolicy !== void 0 ? args.unmockedToolPolicy : existing.unmockedToolPolicy;
|
|
6327
|
+
const mergedScorerIds = args.scorerIds !== void 0 ? args.scorerIds ?? void 0 : existing.scorerIds;
|
|
6328
|
+
const mergedRequestContext = args.requestContext !== void 0 ? args.requestContext : existing.requestContext;
|
|
6329
|
+
const mergedMetadata = args.metadata !== void 0 ? args.metadata : existing.metadata;
|
|
6330
|
+
const mergedSource = args.source !== void 0 ? args.source : existing.source;
|
|
6322
6331
|
const row = await t.one(`UPDATE ${datasetsTable} SET "version" = "version" + 1 WHERE "id" = $1 RETURNING "version", "organizationId", "projectId"`, [args.datasetId]);
|
|
6323
|
-
newVersion = row.version;
|
|
6324
|
-
parentOrganizationId = row.organizationId ?? null;
|
|
6325
|
-
parentProjectId = row.projectId ?? null;
|
|
6332
|
+
const newVersion = row.version;
|
|
6333
|
+
const parentOrganizationId = row.organizationId ?? null;
|
|
6334
|
+
const parentProjectId = row.projectId ?? null;
|
|
6326
6335
|
await t.none(`UPDATE ${itemsTable} SET "validTo" = $1 WHERE "id" = $2 AND "validTo" IS NULL AND "isDeleted" = false`, [newVersion, args.id]);
|
|
6327
6336
|
await t.none(`INSERT INTO ${itemsTable} ("id","datasetId","datasetVersion","externalId","organizationId","projectId","validTo","isDeleted","input","groundTruth","expectedTrajectory","toolMocks","unmockedToolPolicy","scorerIds","requestContext","metadata","source","createdAt","createdAtZ","updatedAt","updatedAtZ") VALUES ($1,$2,$3,$4,$5,$6,NULL,false,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19)`, [
|
|
6328
6337
|
args.id,
|
|
@@ -6352,23 +6361,24 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
|
|
|
6352
6361
|
nowIso,
|
|
6353
6362
|
nowIso
|
|
6354
6363
|
]);
|
|
6364
|
+
updated = {
|
|
6365
|
+
...existing,
|
|
6366
|
+
datasetVersion: newVersion,
|
|
6367
|
+
organizationId: parentOrganizationId,
|
|
6368
|
+
projectId: parentProjectId,
|
|
6369
|
+
input: mergedInput,
|
|
6370
|
+
groundTruth: mergedGroundTruth,
|
|
6371
|
+
expectedTrajectory: mergedExpectedTrajectory,
|
|
6372
|
+
toolMocks: mergedToolMocks,
|
|
6373
|
+
unmockedToolPolicy: mergedUnmockedToolPolicy,
|
|
6374
|
+
scorerIds: mergedScorerIds,
|
|
6375
|
+
requestContext: mergedRequestContext,
|
|
6376
|
+
metadata: mergedMetadata,
|
|
6377
|
+
source: mergedSource,
|
|
6378
|
+
updatedAt: now
|
|
6379
|
+
};
|
|
6355
6380
|
});
|
|
6356
|
-
return
|
|
6357
|
-
...existing,
|
|
6358
|
-
datasetVersion: newVersion,
|
|
6359
|
-
organizationId: parentOrganizationId,
|
|
6360
|
-
projectId: parentProjectId,
|
|
6361
|
-
input: mergedInput,
|
|
6362
|
-
groundTruth: mergedGroundTruth,
|
|
6363
|
-
expectedTrajectory: mergedExpectedTrajectory,
|
|
6364
|
-
toolMocks: mergedToolMocks,
|
|
6365
|
-
unmockedToolPolicy: mergedUnmockedToolPolicy,
|
|
6366
|
-
scorerIds: mergedScorerIds,
|
|
6367
|
-
requestContext: mergedRequestContext,
|
|
6368
|
-
metadata: mergedMetadata,
|
|
6369
|
-
source: mergedSource,
|
|
6370
|
-
updatedAt: now
|
|
6371
|
-
};
|
|
6381
|
+
return updated;
|
|
6372
6382
|
} catch (error) {
|
|
6373
6383
|
if (error instanceof MastraError) throw error;
|
|
6374
6384
|
throw new MastraError({
|
|
@@ -6380,18 +6390,6 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
|
|
|
6380
6390
|
}
|
|
6381
6391
|
async _doDeleteItem({ id, datasetId }) {
|
|
6382
6392
|
try {
|
|
6383
|
-
const existing = await this.#getItemById(this.#db.client, { id });
|
|
6384
|
-
if (!existing) return;
|
|
6385
|
-
if (existing.datasetId !== datasetId) throw new MastraError({
|
|
6386
|
-
id: createStorageErrorId("PG", "DELETE_ITEM", "DATASET_MISMATCH"),
|
|
6387
|
-
domain: ErrorDomain.STORAGE,
|
|
6388
|
-
category: ErrorCategory.USER,
|
|
6389
|
-
details: {
|
|
6390
|
-
itemId: id,
|
|
6391
|
-
expectedDatasetId: datasetId,
|
|
6392
|
-
actualDatasetId: existing.datasetId
|
|
6393
|
-
}
|
|
6394
|
-
});
|
|
6395
6393
|
const datasetsTable = getTableName$5({
|
|
6396
6394
|
indexName: TABLE_DATASETS,
|
|
6397
6395
|
schemaName: getSchemaName$5(this.#schema)
|
|
@@ -6407,6 +6405,19 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
|
|
|
6407
6405
|
const versionId = crypto.randomUUID();
|
|
6408
6406
|
const nowIso = (/* @__PURE__ */ new Date()).toISOString();
|
|
6409
6407
|
await this.#db.client.tx(async (t) => {
|
|
6408
|
+
await t.oneOrNone(`SELECT "id" FROM ${datasetsTable} WHERE "id" = $1 FOR UPDATE`, [datasetId]);
|
|
6409
|
+
const existing = await this.#getItemById(t, { id });
|
|
6410
|
+
if (!existing) return;
|
|
6411
|
+
if (existing.datasetId !== datasetId) throw new MastraError({
|
|
6412
|
+
id: createStorageErrorId("PG", "DELETE_ITEM", "DATASET_MISMATCH"),
|
|
6413
|
+
domain: ErrorDomain.STORAGE,
|
|
6414
|
+
category: ErrorCategory.USER,
|
|
6415
|
+
details: {
|
|
6416
|
+
itemId: id,
|
|
6417
|
+
expectedDatasetId: datasetId,
|
|
6418
|
+
actualDatasetId: existing.datasetId
|
|
6419
|
+
}
|
|
6420
|
+
});
|
|
6410
6421
|
const row = await t.one(`UPDATE ${datasetsTable} SET "version" = "version" + 1 WHERE "id" = $1 RETURNING "version", "organizationId", "projectId"`, [datasetId]);
|
|
6411
6422
|
const newVersion = row.version;
|
|
6412
6423
|
const parentOrganizationId = row.organizationId ?? null;
|
|
@@ -6593,19 +6604,6 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
|
|
|
6593
6604
|
}
|
|
6594
6605
|
async _doBatchDeleteItems(input) {
|
|
6595
6606
|
try {
|
|
6596
|
-
const dataset = await this.#getDatasetById(this.#db.client, { id: input.datasetId });
|
|
6597
|
-
if (!dataset) throw new MastraError({
|
|
6598
|
-
id: createStorageErrorId("PG", "BULK_DELETE_ITEMS", "DATASET_NOT_FOUND"),
|
|
6599
|
-
domain: ErrorDomain.STORAGE,
|
|
6600
|
-
category: ErrorCategory.USER,
|
|
6601
|
-
details: { datasetId: input.datasetId }
|
|
6602
|
-
});
|
|
6603
|
-
const currentItems = [];
|
|
6604
|
-
for (const itemId of input.itemIds) {
|
|
6605
|
-
const item = await this.#getItemById(this.#db.client, { id: itemId });
|
|
6606
|
-
if (item && item.datasetId === input.datasetId) currentItems.push(item);
|
|
6607
|
-
}
|
|
6608
|
-
if (currentItems.length === 0) return;
|
|
6609
6607
|
const datasetsTable = getTableName$5({
|
|
6610
6608
|
indexName: TABLE_DATASETS,
|
|
6611
6609
|
schemaName: getSchemaName$5(this.#schema)
|
|
@@ -6620,9 +6618,19 @@ var DatasetsPG = class DatasetsPG extends DatasetsStorage {
|
|
|
6620
6618
|
});
|
|
6621
6619
|
const nowIso = (/* @__PURE__ */ new Date()).toISOString();
|
|
6622
6620
|
const versionId = crypto.randomUUID();
|
|
6623
|
-
const parentOrganizationId = dataset.organizationId ?? null;
|
|
6624
|
-
const parentProjectId = dataset.projectId ?? null;
|
|
6625
6621
|
await this.#db.client.tx(async (t) => {
|
|
6622
|
+
await t.oneOrNone(`SELECT "id" FROM ${datasetsTable} WHERE "id" = $1 FOR UPDATE`, [input.datasetId]);
|
|
6623
|
+
const dataset = await this.#getDatasetById(t, { id: input.datasetId });
|
|
6624
|
+
if (!dataset) throw new MastraError({
|
|
6625
|
+
id: createStorageErrorId("PG", "BULK_DELETE_ITEMS", "DATASET_NOT_FOUND"),
|
|
6626
|
+
domain: ErrorDomain.STORAGE,
|
|
6627
|
+
category: ErrorCategory.USER,
|
|
6628
|
+
details: { datasetId: input.datasetId }
|
|
6629
|
+
});
|
|
6630
|
+
const currentItems = (await t.manyOrNone(`SELECT * FROM ${itemsTable} WHERE "id" = ANY($1::text[]) AND "datasetId" = $2 AND "validTo" IS NULL AND "isDeleted" = false`, [input.itemIds, input.datasetId])).map((row) => this.transformItemRow(row));
|
|
6631
|
+
if (currentItems.length === 0) return;
|
|
6632
|
+
const parentOrganizationId = dataset.organizationId ?? null;
|
|
6633
|
+
const parentProjectId = dataset.projectId ?? null;
|
|
6626
6634
|
const newVersion = (await t.one(`UPDATE ${datasetsTable} SET "version" = "version" + 1 WHERE "id" = $1 RETURNING "version"`, [input.datasetId])).version;
|
|
6627
6635
|
for (const item of currentItems) {
|
|
6628
6636
|
await t.none(`UPDATE ${itemsTable} SET "validTo" = $1 WHERE "id" = $2 AND "validTo" IS NULL AND "isDeleted" = false`, [newVersion, item.id]);
|
|
@@ -11690,9 +11698,10 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
|
|
|
11690
11698
|
indexName: TABLE_MESSAGES,
|
|
11691
11699
|
schemaName: getSchemaName$3(this.#schema)
|
|
11692
11700
|
});
|
|
11701
|
+
const hydrateMessages = options?.hydrateMessages ?? true;
|
|
11693
11702
|
try {
|
|
11694
11703
|
return await this.#db.client.tx(async (t) => {
|
|
11695
|
-
let messageQuery = `SELECT id, content, role, type, "createdAt", "createdAtZ", thread_id AS "threadId", "resourceId"
|
|
11704
|
+
let messageQuery = `SELECT ${hydrateMessages ? `id, content, role, type, "createdAt", "createdAtZ", thread_id AS "threadId", "resourceId"` : `id, "createdAt"`}
|
|
11696
11705
|
FROM ${messageTableName} WHERE thread_id = $1`;
|
|
11697
11706
|
const messageParams = [sourceThreadId];
|
|
11698
11707
|
let paramIndex = 2;
|
|
@@ -11759,6 +11768,18 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
|
|
|
11759
11768
|
for (const sourceMsg of sourceMessages) {
|
|
11760
11769
|
const newMessageId = crypto.randomUUID();
|
|
11761
11770
|
messageIdMap[sourceMsg.id] = newMessageId;
|
|
11771
|
+
if (!hydrateMessages) {
|
|
11772
|
+
const insertResult = await t.query(`INSERT INTO ${messageTableName} (id, thread_id, content, "createdAt", "createdAtZ", role, type, "resourceId")
|
|
11773
|
+
SELECT $1, $2, content, "createdAt", "createdAtZ", role, type, $3
|
|
11774
|
+
FROM ${messageTableName} WHERE id = $4`, [
|
|
11775
|
+
newMessageId,
|
|
11776
|
+
newThreadId,
|
|
11777
|
+
targetResourceId,
|
|
11778
|
+
sourceMsg.id
|
|
11779
|
+
]);
|
|
11780
|
+
if (insertResult.rowCount !== 1) throw new Error(`Failed to clone message ${sourceMsg.id}: expected 1 row copied but got ${insertResult.rowCount}`);
|
|
11781
|
+
continue;
|
|
11782
|
+
}
|
|
11762
11783
|
const normalizedMsg = this.normalizeMessageRow(sourceMsg);
|
|
11763
11784
|
let parsedContent = normalizedMsg.content;
|
|
11764
11785
|
try {
|
|
@@ -15276,11 +15297,6 @@ function jsonField(value) {
|
|
|
15276
15297
|
}
|
|
15277
15298
|
function parsedJson(value) {
|
|
15278
15299
|
if (value == null) return void 0;
|
|
15279
|
-
if (typeof value === "string") try {
|
|
15280
|
-
return JSON.parse(value);
|
|
15281
|
-
} catch {
|
|
15282
|
-
return;
|
|
15283
|
-
}
|
|
15284
15300
|
return value;
|
|
15285
15301
|
}
|
|
15286
15302
|
function rowToCommonContext(row) {
|