@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.
@@ -3,7 +3,7 @@ name: mastra-duckdb
3
3
  description: Documentation for @mastra/duckdb. Use when working with @mastra/duckdb APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/duckdb"
6
- version: "1.10.0-alpha.2"
6
+ version: "1.10.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.10.0-alpha.2",
2
+ "version": "1.10.0",
3
3
  "package": "@mastra/duckdb",
4
4
  "exports": {},
5
5
  "modules": {}
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-CCPCADER.cjs")).then(({ ObservabilityStorageDuckDB }) => {
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-VRBKtkKz.js").then(({ ObservabilityStorageDuckDB }) => {
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;
@@ -3166,7 +3166,7 @@ function compileDuckDBTraceQuery(plan) {
3166
3166
  }
3167
3167
  const ctes = compileDuckDBTraceScope(collectRelatedCollections(plan.where));
3168
3168
  ctes.push(`candidates AS (
3169
- SELECT ${TRACE_SELECT}
3169
+ SELECT ${TRACE_SELECT}${plan.paginationMode === "delta" ? ", r.cursorId AS deltaWatermark" : ""}
3170
3170
  FROM root_scope r
3171
3171
  WHERE ${conditions.slice(3).join("\n AND ") || "TRUE"}
3172
3172
  )`);
@@ -3186,6 +3186,26 @@ LIMIT ?`,
3186
3186
  values
3187
3187
  };
3188
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
+ }
3189
3209
  const orderField = plan.orderBy.field;
3190
3210
  const direction = plan.orderBy.direction === "asc" ? "ASC" : "DESC";
3191
3211
  if (plan.paginationMode === "page") {
@@ -3202,7 +3222,7 @@ LIMIT ?`,
3202
3222
  SELECT COUNT(*) AS total
3203
3223
  FROM candidates
3204
3224
  )
3205
- SELECT page_rows.*, page_total.total
3225
+ SELECT page_rows.*, page_total.total${deltaPollingFeatureEnabled() ? ", (SELECT coalesce(max(cursorId), 0) FROM root_events) AS streamHead" : ""}
3206
3226
  FROM page_total
3207
3227
  LEFT JOIN page_rows ON TRUE
3208
3228
  ORDER BY page_rows.__row_position ASC NULLS LAST`,
@@ -3371,6 +3391,7 @@ function asIsoTimestamp(value) {
3371
3391
  return value instanceof Date ? value.toISOString() : new Date(value).toISOString();
3372
3392
  }
3373
3393
  async function queryTraces(db, plan) {
3394
+ if (plan.paginationMode === "delta") assertDeltaPollingEnabled();
3374
3395
  if (plan.paginationMode === "page") {
3375
3396
  const query = compileDuckDBTraceQuery(plan);
3376
3397
  const rows = await db.query(query.sql, query.values);
@@ -3395,6 +3416,7 @@ async function queryTraces(db, plan) {
3395
3416
  }));
3396
3417
  return coreStorage.traceQueryResponseSchema.parse({
3397
3418
  traces,
3419
+ ...deltaPollingFeatureEnabled() && typeof coreStorage.encodeTraceQueryDeltaCursor === "function" ? { deltaCursor: coreStorage.encodeTraceQueryDeltaCursor(plan, "duckdb", String(rows[0]?.streamHead ?? 0)) } : {},
3398
3420
  pagination: {
3399
3421
  total,
3400
3422
  page: plan.page,
@@ -3405,7 +3427,8 @@ async function queryTraces(db, plan) {
3405
3427
  }
3406
3428
  const query = compileDuckDBTraceQuery(plan);
3407
3429
  const rows = await db.query(query.sql, query.values);
3408
- const visibleRows = rows.slice(0, plan.limit);
3430
+ const matchingRows = plan.paginationMode === "delta" ? rows.filter((row) => row.traceId != null) : rows;
3431
+ const visibleRows = matchingRows.slice(0, plan.limit);
3409
3432
  if (plan.result === "groups") {
3410
3433
  const groups = visibleRows.map((row) => ({ threadId: String(row.threadId) }));
3411
3434
  const last = groups.at(-1);
@@ -3435,6 +3458,19 @@ async function queryTraces(db, plan) {
3435
3458
  environment: row.environment == null ? null : String(row.environment),
3436
3459
  status: row.status
3437
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
+ }
3438
3474
  const last = traces.at(-1);
3439
3475
  return coreStorage.traceQueryResponseSchema.parse({
3440
3476
  traces,
@@ -4909,4 +4945,4 @@ var ObservabilityStorageDuckDB = class ObservabilityStorageDuckDB extends Observ
4909
4945
  //#endregion
4910
4946
  export { ObservabilityStorageDuckDB };
4911
4947
 
4912
- //# sourceMappingURL=observability-VRBKtkKz.js.map
4948
+ //# sourceMappingURL=observability-D3311DPa.js.map