@mastra/duckdb 1.10.0-alpha.2 → 1.10.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.
@@ -3188,7 +3188,7 @@ function compileDuckDBTraceQuery(plan) {
3188
3188
  }
3189
3189
  const ctes = compileDuckDBTraceScope(collectRelatedCollections(plan.where));
3190
3190
  ctes.push(`candidates AS (
3191
- SELECT ${TRACE_SELECT}
3191
+ SELECT ${TRACE_SELECT}${plan.paginationMode === "delta" ? ", r.cursorId AS deltaWatermark" : ""}
3192
3192
  FROM root_scope r
3193
3193
  WHERE ${conditions.slice(3).join("\n AND ") || "TRUE"}
3194
3194
  )`);
@@ -3208,6 +3208,26 @@ LIMIT ?`,
3208
3208
  values
3209
3209
  };
3210
3210
  }
3211
+ if (plan.paginationMode === "delta") {
3212
+ const watermark = _mastra_core_storage.getTraceQueryDeltaWatermark(plan, "duckdb");
3213
+ if (watermark !== void 0 && (!/^\d+$/.test(watermark) || BigInt(watermark) > 9223372036854775807n)) throw new _mastra_core_storage.TraceQueryCursorError("TRACE_QUERY_CURSOR_MALFORMED");
3214
+ values.push(watermark ?? "0", plan.limit + 1);
3215
+ return {
3216
+ sql: `${candidates},
3217
+ delta_head AS (SELECT coalesce(max(cursorId), 0) AS streamHead FROM root_events),
3218
+ delta_rows AS (
3219
+ SELECT * FROM candidates
3220
+ WHERE deltaWatermark > CAST(? AS BIGINT) ${watermark === void 0 ? "AND FALSE" : ""}
3221
+ ORDER BY deltaWatermark ASC, traceId ASC
3222
+ LIMIT ?
3223
+ )
3224
+ SELECT delta_rows.*, delta_head.streamHead
3225
+ FROM delta_head
3226
+ LEFT JOIN delta_rows ON TRUE
3227
+ ORDER BY delta_rows.deltaWatermark ASC NULLS LAST, delta_rows.traceId ASC`,
3228
+ values
3229
+ };
3230
+ }
3211
3231
  const orderField = plan.orderBy.field;
3212
3232
  const direction = plan.orderBy.direction === "asc" ? "ASC" : "DESC";
3213
3233
  if (plan.paginationMode === "page") {
@@ -3224,7 +3244,7 @@ LIMIT ?`,
3224
3244
  SELECT COUNT(*) AS total
3225
3245
  FROM candidates
3226
3246
  )
3227
- SELECT page_rows.*, page_total.total
3247
+ SELECT page_rows.*, page_total.total${deltaPollingFeatureEnabled() ? ", (SELECT coalesce(max(cursorId), 0) FROM root_events) AS streamHead" : ""}
3228
3248
  FROM page_total
3229
3249
  LEFT JOIN page_rows ON TRUE
3230
3250
  ORDER BY page_rows.__row_position ASC NULLS LAST`,
@@ -3393,6 +3413,7 @@ function asIsoTimestamp(value) {
3393
3413
  return value instanceof Date ? value.toISOString() : new Date(value).toISOString();
3394
3414
  }
3395
3415
  async function queryTraces(db, plan) {
3416
+ if (plan.paginationMode === "delta") assertDeltaPollingEnabled();
3396
3417
  if (plan.paginationMode === "page") {
3397
3418
  const query = compileDuckDBTraceQuery(plan);
3398
3419
  const rows = await db.query(query.sql, query.values);
@@ -3417,6 +3438,7 @@ async function queryTraces(db, plan) {
3417
3438
  }));
3418
3439
  return _mastra_core_storage.traceQueryResponseSchema.parse({
3419
3440
  traces,
3441
+ ...deltaPollingFeatureEnabled() && typeof _mastra_core_storage.encodeTraceQueryDeltaCursor === "function" ? { deltaCursor: _mastra_core_storage.encodeTraceQueryDeltaCursor(plan, "duckdb", String(rows[0]?.streamHead ?? 0)) } : {},
3420
3442
  pagination: {
3421
3443
  total,
3422
3444
  page: plan.page,
@@ -3427,7 +3449,8 @@ async function queryTraces(db, plan) {
3427
3449
  }
3428
3450
  const query = compileDuckDBTraceQuery(plan);
3429
3451
  const rows = await db.query(query.sql, query.values);
3430
- const visibleRows = rows.slice(0, plan.limit);
3452
+ const matchingRows = plan.paginationMode === "delta" ? rows.filter((row) => row.traceId != null) : rows;
3453
+ const visibleRows = matchingRows.slice(0, plan.limit);
3431
3454
  if (plan.result === "groups") {
3432
3455
  const groups = visibleRows.map((row) => ({ threadId: String(row.threadId) }));
3433
3456
  const last = groups.at(-1);
@@ -3457,6 +3480,19 @@ async function queryTraces(db, plan) {
3457
3480
  environment: row.environment == null ? null : String(row.environment),
3458
3481
  status: row.status
3459
3482
  }));
3483
+ if (plan.paginationMode === "delta") {
3484
+ const previous = _mastra_core_storage.getTraceQueryDeltaWatermark(plan, "duckdb") ?? "0";
3485
+ const head = String(rows[0]?.streamHead ?? 0);
3486
+ const watermark = visibleRows.length ? String(visibleRows.at(-1).deltaWatermark) : BigInt(head) > BigInt(previous) ? head : previous;
3487
+ return _mastra_core_storage.traceQueryResponseSchema.parse({
3488
+ traces,
3489
+ delta: {
3490
+ limit: plan.limit,
3491
+ hasMore: matchingRows.length > plan.limit
3492
+ },
3493
+ deltaCursor: _mastra_core_storage.encodeTraceQueryDeltaCursor(plan, "duckdb", watermark)
3494
+ });
3495
+ }
3460
3496
  const last = traces.at(-1);
3461
3497
  return _mastra_core_storage.traceQueryResponseSchema.parse({
3462
3498
  traces,
@@ -4931,4 +4967,4 @@ var ObservabilityStorageDuckDB = class ObservabilityStorageDuckDB extends _mastr
4931
4967
  //#endregion
4932
4968
  exports.ObservabilityStorageDuckDB = ObservabilityStorageDuckDB;
4933
4969
 
4934
- //# sourceMappingURL=observability-CCPCADER.cjs.map
4970
+ //# sourceMappingURL=observability-POEhuHwk.cjs.map