@mastra/duckdb 1.9.0 → 1.10.0-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.
@@ -3235,6 +3235,93 @@ LIMIT ?`,
3235
3235
  values
3236
3236
  };
3237
3237
  }
3238
+ function discoveryRegistry(scope) {
3239
+ if (scope === "trace") return TRACE_FIELDS;
3240
+ if (scope === "spans") return SPAN_FIELDS;
3241
+ if (scope === "scores") return SCORE_FIELDS;
3242
+ return FEEDBACK_FIELDS;
3243
+ }
3244
+ function discoverySource(scope) {
3245
+ if (scope === "trace") return "root_scope r";
3246
+ if (scope === "spans") return "current_spans s";
3247
+ if (scope === "scores") return "current_scores s";
3248
+ return "current_feedback s";
3249
+ }
3250
+ function discoveryCollections(scope) {
3251
+ return scope === "trace" ? /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set([scope]);
3252
+ }
3253
+ function compileDuckDBTraceQueryObservedFields(plan) {
3254
+ const values = [plan.timeRange.from, plan.timeRange.to];
3255
+ if (plan.search) values.push(plan.search);
3256
+ values.push(plan.limit + 1);
3257
+ const search = plan.search ? `AND strpos(lower('metadata.' || entry.key), lower(?)) > 0` : "";
3258
+ return {
3259
+ sql: `WITH ${compileDuckDBTraceScope(/* @__PURE__ */ new Set()).join(",\n ")}
3260
+ SELECT 'metadata.' || entry.key AS path, count(*) AS occurrences
3261
+ FROM root_scope r, LATERAL json_each(r.metadata) entry
3262
+ WHERE entry.type = 'VARCHAR'
3263
+ AND trim(json_extract_string(entry.value, '$')) <> ''
3264
+ AND entry.key <> ''
3265
+ AND strpos(entry.key, '.') = 0
3266
+ AND octet_length(encode('metadata.' || entry.key)) <= ${_mastra_core_storage.TRACE_QUERY_MAX_PATH_BYTES}
3267
+ AND octet_length(encode(json_extract_string(entry.value, '$'))) <= ${_mastra_core_storage.TRACE_QUERY_MAX_STRING_BYTES}
3268
+ ${search}
3269
+ GROUP BY entry.key
3270
+ ORDER BY occurrences DESC, path ASC
3271
+ LIMIT ?`,
3272
+ values
3273
+ };
3274
+ }
3275
+ function compileDuckDBTraceQueryValues(plan) {
3276
+ const values = [plan.timeRange.from, plan.timeRange.to];
3277
+ const ctes = compileDuckDBTraceScope(discoveryCollections(plan.predicateScope));
3278
+ let fieldSql;
3279
+ if (plan.predicateScope === "trace" && plan.path.startsWith("metadata.")) {
3280
+ const jsonPath = `$.${JSON.stringify(plan.path.slice(9))}`;
3281
+ fieldSql = `NULLIF(trim(CASE WHEN json_type(r.metadata, ?) = 'VARCHAR' THEN json_extract_string(r.metadata, ?) END), '')`;
3282
+ values.push(jsonPath, jsonPath);
3283
+ } else fieldSql = fieldDefinition(discoveryRegistry(plan.predicateScope), plan.path).sql;
3284
+ if (plan.search) values.push(plan.search);
3285
+ values.push(plan.limit + 1);
3286
+ const search = plan.search ? "AND strpos(lower(CAST(value AS VARCHAR)), lower(?)) > 0" : "";
3287
+ return {
3288
+ sql: `WITH ${ctes.join(",\n ")}, extracted AS (
3289
+ SELECT ${fieldSql} AS value FROM ${discoverySource(plan.predicateScope)}
3290
+ )
3291
+ SELECT CAST(value AS VARCHAR) AS value, count(*) AS count
3292
+ FROM extracted
3293
+ WHERE value IS NOT NULL
3294
+ AND octet_length(encode(CAST(value AS VARCHAR))) <= ${_mastra_core_storage.TRACE_QUERY_MAX_STRING_BYTES}
3295
+ ${search}
3296
+ GROUP BY value
3297
+ ORDER BY count DESC, value ASC
3298
+ LIMIT ?`,
3299
+ values
3300
+ };
3301
+ }
3302
+ async function getTraceQueryObservedFields(db, plan) {
3303
+ if (plan.predicateScope !== "trace") return {
3304
+ observedFields: [],
3305
+ observedFieldsTruncated: false
3306
+ };
3307
+ const query = compileDuckDBTraceQueryObservedFields(plan);
3308
+ const rows = await db.query(query.sql, query.values);
3309
+ return {
3310
+ observedFields: rows.slice(0, plan.limit).map((row) => _mastra_core_storage.createTraceQueryObservedFieldDescriptor(String(row.path), Number(row.occurrences))),
3311
+ observedFieldsTruncated: rows.length > plan.limit
3312
+ };
3313
+ }
3314
+ async function getTraceQueryValues(db, plan) {
3315
+ const query = compileDuckDBTraceQueryValues(plan);
3316
+ const rows = await db.query(query.sql, query.values);
3317
+ return _mastra_core_storage.getTraceQueryValuesResponseSchema.parse({
3318
+ values: rows.slice(0, plan.limit).map((row) => ({
3319
+ value: String(row.value),
3320
+ count: Number(row.count)
3321
+ })),
3322
+ valuesTruncated: rows.length > plan.limit
3323
+ });
3324
+ }
3238
3325
  function asIsoTimestamp(value) {
3239
3326
  return value instanceof Date ? value.toISOString() : new Date(value).toISOString();
3240
3327
  }
@@ -4528,6 +4615,7 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
4528
4615
  "metrics",
4529
4616
  "logs",
4530
4617
  "trace-query",
4618
+ "trace-query-discovery",
4531
4619
  "thread-query"
4532
4620
  ];
4533
4621
  return [
@@ -4535,6 +4623,7 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
4535
4623
  "logs",
4536
4624
  "delta-polling",
4537
4625
  "trace-query",
4626
+ "trace-query-discovery",
4538
4627
  "thread-query"
4539
4628
  ];
4540
4629
  }
@@ -4568,6 +4657,12 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
4568
4657
  async queryTraces(plan) {
4569
4658
  return queryTraces(this.db, plan);
4570
4659
  }
4660
+ async getTraceQueryObservedFields(plan) {
4661
+ return getTraceQueryObservedFields(this.db, plan);
4662
+ }
4663
+ async getTraceQueryValues(plan) {
4664
+ return getTraceQueryValues(this.db, plan);
4665
+ }
4571
4666
  async queryThreads(plan) {
4572
4667
  return queryThreads(this.db, plan);
4573
4668
  }
@@ -4684,4 +4779,4 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
4684
4779
  //#endregion
4685
4780
  exports.ObservabilityStorageDuckDB = ObservabilityStorageDuckDB;
4686
4781
 
4687
- //# sourceMappingURL=observability-BB4mjnZR.cjs.map
4782
+ //# sourceMappingURL=observability-DT-R9Xkn.cjs.map