@mastra/duckdb 1.10.0-alpha.1 → 1.10.0-alpha.3
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 +1 -1
- package/dist/index.js +1 -1
- package/dist/{observability-W6La6xQK.js → observability-D3311DPa.js} +99 -4
- package/dist/observability-D3311DPa.js.map +1 -0
- package/dist/{observability-CL_Bv53d.cjs → observability-POEhuHwk.cjs} +99 -4
- package/dist/observability-POEhuHwk.cjs.map +1 -0
- package/dist/storage/domains/observability/scores.d.ts.map +1 -1
- package/dist/storage/domains/observability/trace-query.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/observability-CL_Bv53d.cjs.map +0 -1
- package/dist/observability-W6La6xQK.js.map +0 -1
package/dist/docs/SKILL.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -532,7 +532,7 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
|
|
|
532
532
|
async loadDelegate() {
|
|
533
533
|
if (this.delegate) return this.delegate;
|
|
534
534
|
if (this.unavailableError) return null;
|
|
535
|
-
if (!this.loadPromise) this.loadPromise = Promise.resolve().then(() => require("./observability-
|
|
535
|
+
if (!this.loadPromise) this.loadPromise = Promise.resolve().then(() => require("./observability-POEhuHwk.cjs")).then(({ ObservabilityStorageDuckDB }) => {
|
|
536
536
|
const delegate = new ObservabilityStorageDuckDB({ db: this.db });
|
|
537
537
|
this.delegate = delegate;
|
|
538
538
|
return delegate;
|
package/dist/index.js
CHANGED
|
@@ -531,7 +531,7 @@ var ObservabilityStorageDuckDB = class extends ObservabilityStorage {
|
|
|
531
531
|
async loadDelegate() {
|
|
532
532
|
if (this.delegate) return this.delegate;
|
|
533
533
|
if (this.unavailableError) return null;
|
|
534
|
-
if (!this.loadPromise) this.loadPromise = import("./observability-
|
|
534
|
+
if (!this.loadPromise) this.loadPromise = import("./observability-D3311DPa.js").then(({ ObservabilityStorageDuckDB }) => {
|
|
535
535
|
const delegate = new ObservabilityStorageDuckDB({ db: this.db });
|
|
536
536
|
this.delegate = delegate;
|
|
537
537
|
return delegate;
|
|
@@ -2420,7 +2420,13 @@ async function createScore(db, args) {
|
|
|
2420
2420
|
/** Insert multiple score events in a single statement. */
|
|
2421
2421
|
async function batchCreateScores(db, args) {
|
|
2422
2422
|
if (args.scores.length === 0) return;
|
|
2423
|
-
const
|
|
2423
|
+
const currentScores = /* @__PURE__ */ new Map();
|
|
2424
|
+
for (const score of args.scores) {
|
|
2425
|
+
const key = score.scoreId ?? Symbol();
|
|
2426
|
+
currentScores.delete(key);
|
|
2427
|
+
currentScores.set(key, score);
|
|
2428
|
+
}
|
|
2429
|
+
const tuples = [...currentScores.values()].map((s) => {
|
|
2424
2430
|
const legacyScore = s;
|
|
2425
2431
|
const scoreSource = legacyScore.scoreSource ?? legacyScore.source ?? null;
|
|
2426
2432
|
return `(${[
|
|
@@ -3160,7 +3166,7 @@ function compileDuckDBTraceQuery(plan) {
|
|
|
3160
3166
|
}
|
|
3161
3167
|
const ctes = compileDuckDBTraceScope(collectRelatedCollections(plan.where));
|
|
3162
3168
|
ctes.push(`candidates AS (
|
|
3163
|
-
SELECT ${TRACE_SELECT}
|
|
3169
|
+
SELECT ${TRACE_SELECT}${plan.paginationMode === "delta" ? ", r.cursorId AS deltaWatermark" : ""}
|
|
3164
3170
|
FROM root_scope r
|
|
3165
3171
|
WHERE ${conditions.slice(3).join("\n AND ") || "TRUE"}
|
|
3166
3172
|
)`);
|
|
@@ -3180,8 +3186,49 @@ LIMIT ?`,
|
|
|
3180
3186
|
values
|
|
3181
3187
|
};
|
|
3182
3188
|
}
|
|
3189
|
+
if (plan.paginationMode === "delta") {
|
|
3190
|
+
const watermark = coreStorage.getTraceQueryDeltaWatermark(plan, "duckdb");
|
|
3191
|
+
if (watermark !== void 0 && (!/^\d+$/.test(watermark) || BigInt(watermark) > 9223372036854775807n)) throw new coreStorage.TraceQueryCursorError("TRACE_QUERY_CURSOR_MALFORMED");
|
|
3192
|
+
values.push(watermark ?? "0", plan.limit + 1);
|
|
3193
|
+
return {
|
|
3194
|
+
sql: `${candidates},
|
|
3195
|
+
delta_head AS (SELECT coalesce(max(cursorId), 0) AS streamHead FROM root_events),
|
|
3196
|
+
delta_rows AS (
|
|
3197
|
+
SELECT * FROM candidates
|
|
3198
|
+
WHERE deltaWatermark > CAST(? AS BIGINT) ${watermark === void 0 ? "AND FALSE" : ""}
|
|
3199
|
+
ORDER BY deltaWatermark ASC, traceId ASC
|
|
3200
|
+
LIMIT ?
|
|
3201
|
+
)
|
|
3202
|
+
SELECT delta_rows.*, delta_head.streamHead
|
|
3203
|
+
FROM delta_head
|
|
3204
|
+
LEFT JOIN delta_rows ON TRUE
|
|
3205
|
+
ORDER BY delta_rows.deltaWatermark ASC NULLS LAST, delta_rows.traceId ASC`,
|
|
3206
|
+
values
|
|
3207
|
+
};
|
|
3208
|
+
}
|
|
3183
3209
|
const orderField = plan.orderBy.field;
|
|
3184
3210
|
const direction = plan.orderBy.direction === "asc" ? "ASC" : "DESC";
|
|
3211
|
+
if (plan.paginationMode === "page") {
|
|
3212
|
+
values.push(plan.perPage, plan.page * plan.perPage);
|
|
3213
|
+
return {
|
|
3214
|
+
sql: `${candidates},
|
|
3215
|
+
page_rows AS (
|
|
3216
|
+
SELECT *, row_number() OVER (ORDER BY ${orderField} ${direction}, traceId ASC) AS __row_position
|
|
3217
|
+
FROM candidates
|
|
3218
|
+
ORDER BY ${orderField} ${direction}, traceId ASC
|
|
3219
|
+
LIMIT ? OFFSET ?
|
|
3220
|
+
),
|
|
3221
|
+
page_total AS (
|
|
3222
|
+
SELECT COUNT(*) AS total
|
|
3223
|
+
FROM candidates
|
|
3224
|
+
)
|
|
3225
|
+
SELECT page_rows.*, page_total.total${deltaPollingFeatureEnabled() ? ", (SELECT coalesce(max(cursorId), 0) FROM root_events) AS streamHead" : ""}
|
|
3226
|
+
FROM page_total
|
|
3227
|
+
LEFT JOIN page_rows ON TRUE
|
|
3228
|
+
ORDER BY page_rows.__row_position ASC NULLS LAST`,
|
|
3229
|
+
values
|
|
3230
|
+
};
|
|
3231
|
+
}
|
|
3185
3232
|
let pageCondition = "";
|
|
3186
3233
|
if (plan.cursor) {
|
|
3187
3234
|
pageCondition = `WHERE (${orderField} ${plan.orderBy.direction === "asc" ? ">" : "<"} CAST(? AS TIMESTAMP) OR (${orderField} = CAST(? AS TIMESTAMP) AND traceId > ?))`;
|
|
@@ -3344,9 +3391,44 @@ function asIsoTimestamp(value) {
|
|
|
3344
3391
|
return value instanceof Date ? value.toISOString() : new Date(value).toISOString();
|
|
3345
3392
|
}
|
|
3346
3393
|
async function queryTraces(db, plan) {
|
|
3394
|
+
if (plan.paginationMode === "delta") assertDeltaPollingEnabled();
|
|
3395
|
+
if (plan.paginationMode === "page") {
|
|
3396
|
+
const query = compileDuckDBTraceQuery(plan);
|
|
3397
|
+
const rows = await db.query(query.sql, query.values);
|
|
3398
|
+
const total = Number(rows[0]?.total ?? 0);
|
|
3399
|
+
const traces = rows.filter((row) => row.traceId != null).map((row) => ({
|
|
3400
|
+
traceId: String(row.traceId),
|
|
3401
|
+
rootSpanId: String(row.rootSpanId),
|
|
3402
|
+
name: row.name,
|
|
3403
|
+
entityId: row.entityId ?? null,
|
|
3404
|
+
parentSpanId: row.parentSpanId ?? null,
|
|
3405
|
+
createdAt: asIsoTimestamp(row.startedAt),
|
|
3406
|
+
metadata: parseJson(row.metadata) ?? null,
|
|
3407
|
+
inputPreview: coreStorage.buildInputPreview(row.input) ?? null,
|
|
3408
|
+
threadId: row.threadId == null ? null : String(row.threadId),
|
|
3409
|
+
resourceId: row.resourceId == null ? null : String(row.resourceId),
|
|
3410
|
+
startedAt: asIsoTimestamp(row.startedAt),
|
|
3411
|
+
endedAt: asIsoTimestamp(row.endedAt),
|
|
3412
|
+
entityName: row.entityName == null ? null : String(row.entityName),
|
|
3413
|
+
entityType: row.entityType == null ? null : String(row.entityType),
|
|
3414
|
+
environment: row.environment == null ? null : String(row.environment),
|
|
3415
|
+
status: row.status
|
|
3416
|
+
}));
|
|
3417
|
+
return coreStorage.traceQueryResponseSchema.parse({
|
|
3418
|
+
traces,
|
|
3419
|
+
...deltaPollingFeatureEnabled() && typeof coreStorage.encodeTraceQueryDeltaCursor === "function" ? { deltaCursor: coreStorage.encodeTraceQueryDeltaCursor(plan, "duckdb", String(rows[0]?.streamHead ?? 0)) } : {},
|
|
3420
|
+
pagination: {
|
|
3421
|
+
total,
|
|
3422
|
+
page: plan.page,
|
|
3423
|
+
perPage: plan.perPage,
|
|
3424
|
+
hasMore: (plan.page + 1) * plan.perPage < total
|
|
3425
|
+
}
|
|
3426
|
+
});
|
|
3427
|
+
}
|
|
3347
3428
|
const query = compileDuckDBTraceQuery(plan);
|
|
3348
3429
|
const rows = await db.query(query.sql, query.values);
|
|
3349
|
-
const
|
|
3430
|
+
const matchingRows = plan.paginationMode === "delta" ? rows.filter((row) => row.traceId != null) : rows;
|
|
3431
|
+
const visibleRows = matchingRows.slice(0, plan.limit);
|
|
3350
3432
|
if (plan.result === "groups") {
|
|
3351
3433
|
const groups = visibleRows.map((row) => ({ threadId: String(row.threadId) }));
|
|
3352
3434
|
const last = groups.at(-1);
|
|
@@ -3376,6 +3458,19 @@ async function queryTraces(db, plan) {
|
|
|
3376
3458
|
environment: row.environment == null ? null : String(row.environment),
|
|
3377
3459
|
status: row.status
|
|
3378
3460
|
}));
|
|
3461
|
+
if (plan.paginationMode === "delta") {
|
|
3462
|
+
const previous = coreStorage.getTraceQueryDeltaWatermark(plan, "duckdb") ?? "0";
|
|
3463
|
+
const head = String(rows[0]?.streamHead ?? 0);
|
|
3464
|
+
const watermark = visibleRows.length ? String(visibleRows.at(-1).deltaWatermark) : BigInt(head) > BigInt(previous) ? head : previous;
|
|
3465
|
+
return coreStorage.traceQueryResponseSchema.parse({
|
|
3466
|
+
traces,
|
|
3467
|
+
delta: {
|
|
3468
|
+
limit: plan.limit,
|
|
3469
|
+
hasMore: matchingRows.length > plan.limit
|
|
3470
|
+
},
|
|
3471
|
+
deltaCursor: coreStorage.encodeTraceQueryDeltaCursor(plan, "duckdb", watermark)
|
|
3472
|
+
});
|
|
3473
|
+
}
|
|
3379
3474
|
const last = traces.at(-1);
|
|
3380
3475
|
return coreStorage.traceQueryResponseSchema.parse({
|
|
3381
3476
|
traces,
|
|
@@ -4850,4 +4945,4 @@ var ObservabilityStorageDuckDB = class ObservabilityStorageDuckDB extends Observ
|
|
|
4850
4945
|
//#endregion
|
|
4851
4946
|
export { ObservabilityStorageDuckDB };
|
|
4852
4947
|
|
|
4853
|
-
//# sourceMappingURL=observability-
|
|
4948
|
+
//# sourceMappingURL=observability-D3311DPa.js.map
|