@mastra/pg 1.23.1-alpha.0 → 1.24.0-alpha.1
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 +87 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +87 -15
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/experiments/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/v-next/trace-query.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/docs/SKILL.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -7108,6 +7108,12 @@ var ExperimentsPG = class ExperimentsPG extends _mastra_core_storage.Experiments
|
|
|
7108
7108
|
name: "idx_experiment_results_org_project",
|
|
7109
7109
|
table: _mastra_core_storage.TABLE_EXPERIMENT_RESULTS,
|
|
7110
7110
|
columns: ["organizationId", "projectId"]
|
|
7111
|
+
},
|
|
7112
|
+
{
|
|
7113
|
+
name: "idx_experiment_results_tags_gin",
|
|
7114
|
+
table: _mastra_core_storage.TABLE_EXPERIMENT_RESULTS,
|
|
7115
|
+
columns: ["tags"],
|
|
7116
|
+
method: "gin"
|
|
7111
7117
|
}
|
|
7112
7118
|
];
|
|
7113
7119
|
}
|
|
@@ -7716,6 +7722,10 @@ var ExperimentsPG = class ExperimentsPG extends _mastra_core_storage.Experiments
|
|
|
7716
7722
|
conditions.push(`"status" = $${paramIndex++}`);
|
|
7717
7723
|
queryParams.push(args.status);
|
|
7718
7724
|
}
|
|
7725
|
+
for (const tag of args.tags ?? []) {
|
|
7726
|
+
conditions.push(`"tags" @> $${paramIndex++}::jsonb`);
|
|
7727
|
+
queryParams.push(JSON.stringify([tag]));
|
|
7728
|
+
}
|
|
7719
7729
|
if (args.filters) {
|
|
7720
7730
|
const { organizationId, projectId } = args.filters;
|
|
7721
7731
|
if (organizationId !== void 0) {
|
|
@@ -17081,12 +17091,32 @@ const TRACE_FIELDS = {
|
|
|
17081
17091
|
status: TRACE_STATUS_SQL
|
|
17082
17092
|
};
|
|
17083
17093
|
const SPAN_FIELDS = {
|
|
17094
|
+
name: "s.\"name\"",
|
|
17084
17095
|
spanType: "s.\"spanType\"",
|
|
17085
|
-
|
|
17096
|
+
model: "s.\"model\"",
|
|
17097
|
+
provider: "s.\"provider\"",
|
|
17098
|
+
startedAt: "s.\"startedAt\"",
|
|
17099
|
+
endedAt: "s.\"endedAt\"",
|
|
17100
|
+
durationMs: "s.\"durationMs\"",
|
|
17101
|
+
status: "s.\"status\"",
|
|
17102
|
+
error: "s.\"error\"",
|
|
17103
|
+
entityType: "s.\"entityType\"",
|
|
17104
|
+
entityId: "s.\"entityId\"",
|
|
17105
|
+
entityName: "s.\"entityName\"",
|
|
17106
|
+
entityVersionId: "s.\"entityVersionId\"",
|
|
17107
|
+
parentEntityVersionId: "s.\"parentEntityVersionId\"",
|
|
17108
|
+
rootEntityVersionId: "s.\"rootEntityVersionId\""
|
|
17086
17109
|
};
|
|
17087
17110
|
const SCORE_FIELDS = {
|
|
17088
17111
|
scorerId: "s.\"scorerId\"",
|
|
17089
|
-
|
|
17112
|
+
scorerVersion: "s.\"scorerVersion\"",
|
|
17113
|
+
scoreSource: "s.\"scoreSource\"",
|
|
17114
|
+
score: "s.\"score\"",
|
|
17115
|
+
timestamp: "s.\"timestamp\"",
|
|
17116
|
+
spanId: "s.\"spanId\"",
|
|
17117
|
+
entityVersionId: "s.\"entityVersionId\"",
|
|
17118
|
+
parentEntityVersionId: "s.\"parentEntityVersionId\"",
|
|
17119
|
+
rootEntityVersionId: "s.\"rootEntityVersionId\""
|
|
17090
17120
|
};
|
|
17091
17121
|
const TRACE_SELECT = `
|
|
17092
17122
|
r."traceId" AS "traceId",
|
|
@@ -17104,15 +17134,18 @@ function fieldSql(registry, field) {
|
|
|
17104
17134
|
if (sql === void 0) throw new Error(`Unsupported trusted trace-query field: ${field}`);
|
|
17105
17135
|
return sql;
|
|
17106
17136
|
}
|
|
17137
|
+
function isMetadataField(field) {
|
|
17138
|
+
return field.startsWith("metadata.");
|
|
17139
|
+
}
|
|
17107
17140
|
function placeholders(values, offset) {
|
|
17108
17141
|
return values.map((_, index) => `$${offset + index}`).join(", ");
|
|
17109
17142
|
}
|
|
17110
|
-
function compileScalarPredicate(predicate, registry, parameterOffset) {
|
|
17143
|
+
function compileScalarPredicate(predicate, registry, parameterOffset, allowMetadata = false) {
|
|
17111
17144
|
if (predicate.type === "boolean") {
|
|
17112
17145
|
const values = [];
|
|
17113
17146
|
return {
|
|
17114
17147
|
sql: predicate.args.map((arg) => {
|
|
17115
|
-
const compiled = compileScalarPredicate(arg, registry, parameterOffset + values.length);
|
|
17148
|
+
const compiled = compileScalarPredicate(arg, registry, parameterOffset + values.length, allowMetadata);
|
|
17116
17149
|
values.push(...compiled.values);
|
|
17117
17150
|
return `(${compiled.sql})`;
|
|
17118
17151
|
}).join(predicate.operator === "and" ? " AND " : " OR "),
|
|
@@ -17120,26 +17153,36 @@ function compileScalarPredicate(predicate, registry, parameterOffset) {
|
|
|
17120
17153
|
};
|
|
17121
17154
|
}
|
|
17122
17155
|
if (predicate.type === "not") {
|
|
17123
|
-
const compiled = compileScalarPredicate(predicate.arg, registry, parameterOffset);
|
|
17156
|
+
const compiled = compileScalarPredicate(predicate.arg, registry, parameterOffset, allowMetadata);
|
|
17124
17157
|
return {
|
|
17125
17158
|
sql: `NOT (${compiled.sql})`,
|
|
17126
17159
|
values: compiled.values
|
|
17127
17160
|
};
|
|
17128
17161
|
}
|
|
17129
|
-
|
|
17162
|
+
let field;
|
|
17163
|
+
let fieldValues = [];
|
|
17164
|
+
if (isMetadataField(predicate.field)) {
|
|
17165
|
+
if (!allowMetadata) throw new Error(`Unsupported trusted trace-query field: ${predicate.field}`);
|
|
17166
|
+
const keyParameter = `$${parameterOffset++}`;
|
|
17167
|
+
field = `COALESCE(
|
|
17168
|
+
CASE WHEN jsonb_typeof(r."metadataSearch" -> ${keyParameter}) = 'string' THEN r."metadataSearch" ->> ${keyParameter} END,
|
|
17169
|
+
CASE WHEN jsonb_typeof(r."metadataRaw" -> ${keyParameter}) = 'string' THEN NULLIF(btrim(r."metadataRaw" ->> ${keyParameter}), '') END
|
|
17170
|
+
)`;
|
|
17171
|
+
fieldValues = [predicate.field.slice(9)];
|
|
17172
|
+
} else field = fieldSql(registry, predicate.field);
|
|
17130
17173
|
if (predicate.type === "presence") return {
|
|
17131
17174
|
sql: `${field} IS ${predicate.operator === "exists" ? "NOT " : ""}NULL`,
|
|
17132
|
-
values:
|
|
17175
|
+
values: fieldValues
|
|
17133
17176
|
};
|
|
17134
17177
|
if (predicate.type === "membership") {
|
|
17135
17178
|
const list = placeholders(predicate.values, parameterOffset);
|
|
17136
17179
|
if (predicate.operator === "in") return {
|
|
17137
17180
|
sql: `${field} IS NOT NULL AND ${field} IN (${list})`,
|
|
17138
|
-
values: predicate.values
|
|
17181
|
+
values: [...fieldValues, ...predicate.values]
|
|
17139
17182
|
};
|
|
17140
17183
|
return {
|
|
17141
17184
|
sql: `${field} IS NULL OR ${field} NOT IN (${list})`,
|
|
17142
|
-
values: predicate.values
|
|
17185
|
+
values: [...fieldValues, ...predicate.values]
|
|
17143
17186
|
};
|
|
17144
17187
|
}
|
|
17145
17188
|
const parameter = `$${parameterOffset}`;
|
|
@@ -17151,17 +17194,17 @@ function compileScalarPredicate(predicate, registry, parameterOffset) {
|
|
|
17151
17194
|
};
|
|
17152
17195
|
if (predicate.operator === "eq") return {
|
|
17153
17196
|
sql: `${field} IS NOT DISTINCT FROM ${parameter}`,
|
|
17154
|
-
values: [predicate.value]
|
|
17197
|
+
values: [...fieldValues, predicate.value]
|
|
17155
17198
|
};
|
|
17156
17199
|
if (predicate.operator === "ne") return {
|
|
17157
17200
|
sql: `${field} IS DISTINCT FROM ${parameter}`,
|
|
17158
|
-
values: [predicate.value]
|
|
17201
|
+
values: [...fieldValues, predicate.value]
|
|
17159
17202
|
};
|
|
17160
17203
|
const operator = operators[predicate.operator];
|
|
17161
17204
|
if (operator === void 0) throw new Error(`Unsupported trusted trace-query operator: ${predicate.operator}`);
|
|
17162
17205
|
return {
|
|
17163
17206
|
sql: `${field} IS NOT NULL AND ${field} ${operator} ${parameter}`,
|
|
17164
|
-
values: [predicate.value]
|
|
17207
|
+
values: [...fieldValues, predicate.value]
|
|
17165
17208
|
};
|
|
17166
17209
|
}
|
|
17167
17210
|
function latestRootPredicate$1(spanTable) {
|
|
@@ -17226,7 +17269,7 @@ function compilePredicate(predicate, parameterOffset) {
|
|
|
17226
17269
|
values: compiled.values
|
|
17227
17270
|
};
|
|
17228
17271
|
}
|
|
17229
|
-
return compileScalarPredicate(predicate, TRACE_FIELDS, parameterOffset);
|
|
17272
|
+
return compileScalarPredicate(predicate, TRACE_FIELDS, parameterOffset, true);
|
|
17230
17273
|
}
|
|
17231
17274
|
function compilePostgresTraceQuery(schema, plan) {
|
|
17232
17275
|
const spanTable = qualifiedTable(schema, TABLE_SPAN_EVENTS);
|
|
@@ -17246,14 +17289,43 @@ function compilePostgresTraceQuery(schema, plan) {
|
|
|
17246
17289
|
].join("\n AND ")}
|
|
17247
17290
|
)`];
|
|
17248
17291
|
if (relationCollections.has("spans")) ctes.push(`current_spans AS MATERIALIZED (
|
|
17249
|
-
SELECT
|
|
17292
|
+
SELECT
|
|
17293
|
+
s."traceId",
|
|
17294
|
+
s."name",
|
|
17295
|
+
s."spanType",
|
|
17296
|
+
CASE WHEN jsonb_typeof(s."attributes" -> 'model') = 'string' THEN s."attributes" ->> 'model' END AS "model",
|
|
17297
|
+
CASE WHEN jsonb_typeof(s."attributes" -> 'provider') = 'string' THEN s."attributes" ->> 'provider' END AS "provider",
|
|
17298
|
+
s."startedAt",
|
|
17299
|
+
CASE WHEN s."isPending" THEN NULL ELSE s."endedAt" END AS "endedAt",
|
|
17300
|
+
CASE
|
|
17301
|
+
WHEN s."isPending" THEN NULL
|
|
17302
|
+
ELSE EXTRACT(EPOCH FROM (s."endedAt" - s."startedAt")) * 1000
|
|
17303
|
+
END AS "durationMs",
|
|
17304
|
+
CASE WHEN s."error" IS NOT NULL THEN 'error' ELSE 'success' END AS "status",
|
|
17305
|
+
s."error",
|
|
17306
|
+
s."entityType",
|
|
17307
|
+
s."entityId",
|
|
17308
|
+
s."entityName",
|
|
17309
|
+
s."entityVersionId",
|
|
17310
|
+
s."parentEntityVersionId",
|
|
17311
|
+
s."rootEntityVersionId"
|
|
17250
17312
|
FROM ${spanTable} s
|
|
17251
17313
|
WHERE s."traceId" IS NOT NULL
|
|
17252
17314
|
AND s."traceId" IN (SELECT "traceId" FROM root_scope)
|
|
17253
17315
|
AND ${latestSpanPredicate$1(spanTable)}
|
|
17254
17316
|
)`);
|
|
17255
17317
|
if (relationCollections.has("scores")) ctes.push(`current_scores AS MATERIALIZED (
|
|
17256
|
-
SELECT
|
|
17318
|
+
SELECT
|
|
17319
|
+
s."traceId",
|
|
17320
|
+
s."spanId",
|
|
17321
|
+
s."timestamp",
|
|
17322
|
+
s."scorerId",
|
|
17323
|
+
s."scorerVersion",
|
|
17324
|
+
s."scoreSource",
|
|
17325
|
+
s."score",
|
|
17326
|
+
s."entityVersionId",
|
|
17327
|
+
s."parentEntityVersionId",
|
|
17328
|
+
s."rootEntityVersionId"
|
|
17257
17329
|
FROM ${scoreTable} s
|
|
17258
17330
|
WHERE s."traceId" IS NOT NULL
|
|
17259
17331
|
AND s."traceId" IN (SELECT "traceId" FROM root_scope)
|