@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.
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/index.cjs +9 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/{observability-DEjVUB3O.js → observability-CCUvqiBv.js} +96 -1
- package/dist/observability-CCUvqiBv.js.map +1 -0
- package/dist/{observability-BB4mjnZR.cjs → observability-DT-R9Xkn.cjs} +96 -1
- package/dist/observability-DT-R9Xkn.cjs.map +1 -0
- package/dist/storage/domains/observability/index.d.ts +4 -2
- package/dist/storage/domains/observability/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/trace-query.d.ts +5 -1
- package/dist/storage/domains/observability/trace-query.d.ts.map +1 -1
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/observability-BB4mjnZR.cjs.map +0 -1
- package/dist/observability-DEjVUB3O.js.map +0 -1
|
@@ -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-
|
|
4782
|
+
//# sourceMappingURL=observability-DT-R9Xkn.cjs.map
|