@mastra/duckdb 1.7.0 → 1.8.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 +1 -1
- package/dist/index.js +1 -1
- package/dist/{observability-Bt92lKRG.js → observability-CgtrnaKz.js} +171 -24
- package/dist/observability-CgtrnaKz.js.map +1 -0
- package/dist/{observability-yLoG0tl3.cjs → observability-VHURnMMH.cjs} +171 -24
- package/dist/observability-VHURnMMH.cjs.map +1 -0
- package/dist/storage/domains/observability/ddl.d.ts +1 -1
- package/dist/storage/domains/observability/ddl.d.ts.map +1 -1
- package/dist/storage/domains/observability/trace-query.d.ts.map +1 -1
- package/dist/storage/domains/observability/tracing.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/observability-Bt92lKRG.js.map +0 -1
- package/dist/observability-yLoG0tl3.cjs.map +0 -1
|
@@ -74,6 +74,8 @@ CREATE TABLE IF NOT EXISTS span_events (
|
|
|
74
74
|
entityId VARCHAR,
|
|
75
75
|
entityName VARCHAR,
|
|
76
76
|
entityVersionId VARCHAR,
|
|
77
|
+
parentEntityVersionId VARCHAR,
|
|
78
|
+
rootEntityVersionId VARCHAR,
|
|
77
79
|
|
|
78
80
|
-- Context
|
|
79
81
|
userId VARCHAR,
|
|
@@ -339,6 +341,8 @@ const ALL_MIGRATIONS = [
|
|
|
339
341
|
`CREATE SEQUENCE IF NOT EXISTS feedback_events_cursor_id_seq START 1`,
|
|
340
342
|
`ALTER TABLE span_events ADD COLUMN IF NOT EXISTS cursorId BIGINT`,
|
|
341
343
|
`ALTER TABLE span_events ADD COLUMN IF NOT EXISTS entityVersionId VARCHAR`,
|
|
344
|
+
`ALTER TABLE span_events ADD COLUMN IF NOT EXISTS parentEntityVersionId VARCHAR`,
|
|
345
|
+
`ALTER TABLE span_events ADD COLUMN IF NOT EXISTS rootEntityVersionId VARCHAR`,
|
|
342
346
|
`ALTER TABLE metric_events ADD COLUMN IF NOT EXISTS cursorId BIGINT`,
|
|
343
347
|
`ALTER TABLE metric_events ADD COLUMN IF NOT EXISTS entityVersionId VARCHAR`,
|
|
344
348
|
`ALTER TABLE metric_events ADD COLUMN IF NOT EXISTS parentEntityVersionId VARCHAR`,
|
|
@@ -2620,13 +2624,65 @@ const TRACE_FIELDS = {
|
|
|
2620
2624
|
}
|
|
2621
2625
|
};
|
|
2622
2626
|
const SPAN_FIELDS = {
|
|
2627
|
+
name: {
|
|
2628
|
+
sql: "s.name",
|
|
2629
|
+
parameterType: "scalar"
|
|
2630
|
+
},
|
|
2623
2631
|
spanType: {
|
|
2624
2632
|
sql: "s.spanType",
|
|
2625
2633
|
parameterType: "scalar"
|
|
2626
2634
|
},
|
|
2635
|
+
model: {
|
|
2636
|
+
sql: "s.model",
|
|
2637
|
+
parameterType: "scalar"
|
|
2638
|
+
},
|
|
2639
|
+
provider: {
|
|
2640
|
+
sql: "s.provider",
|
|
2641
|
+
parameterType: "scalar"
|
|
2642
|
+
},
|
|
2643
|
+
startedAt: {
|
|
2644
|
+
sql: "s.startedAt",
|
|
2645
|
+
parameterType: "timestamp"
|
|
2646
|
+
},
|
|
2647
|
+
endedAt: {
|
|
2648
|
+
sql: "s.endedAt",
|
|
2649
|
+
parameterType: "timestamp"
|
|
2650
|
+
},
|
|
2651
|
+
durationMs: {
|
|
2652
|
+
sql: "s.durationMs",
|
|
2653
|
+
parameterType: "scalar"
|
|
2654
|
+
},
|
|
2655
|
+
status: {
|
|
2656
|
+
sql: "s.status",
|
|
2657
|
+
parameterType: "scalar"
|
|
2658
|
+
},
|
|
2627
2659
|
error: {
|
|
2628
2660
|
sql: "s.error",
|
|
2629
2661
|
parameterType: "scalar"
|
|
2662
|
+
},
|
|
2663
|
+
entityType: {
|
|
2664
|
+
sql: "s.entityType",
|
|
2665
|
+
parameterType: "scalar"
|
|
2666
|
+
},
|
|
2667
|
+
entityId: {
|
|
2668
|
+
sql: "s.entityId",
|
|
2669
|
+
parameterType: "scalar"
|
|
2670
|
+
},
|
|
2671
|
+
entityName: {
|
|
2672
|
+
sql: "s.entityName",
|
|
2673
|
+
parameterType: "scalar"
|
|
2674
|
+
},
|
|
2675
|
+
entityVersionId: {
|
|
2676
|
+
sql: "s.entityVersionId",
|
|
2677
|
+
parameterType: "scalar"
|
|
2678
|
+
},
|
|
2679
|
+
parentEntityVersionId: {
|
|
2680
|
+
sql: "s.parentEntityVersionId",
|
|
2681
|
+
parameterType: "scalar"
|
|
2682
|
+
},
|
|
2683
|
+
rootEntityVersionId: {
|
|
2684
|
+
sql: "s.rootEntityVersionId",
|
|
2685
|
+
parameterType: "scalar"
|
|
2630
2686
|
}
|
|
2631
2687
|
};
|
|
2632
2688
|
const SCORE_FIELDS = {
|
|
@@ -2634,9 +2690,37 @@ const SCORE_FIELDS = {
|
|
|
2634
2690
|
sql: "s.scorerId",
|
|
2635
2691
|
parameterType: "scalar"
|
|
2636
2692
|
},
|
|
2693
|
+
scorerVersion: {
|
|
2694
|
+
sql: "s.scorerVersion",
|
|
2695
|
+
parameterType: "scalar"
|
|
2696
|
+
},
|
|
2697
|
+
scoreSource: {
|
|
2698
|
+
sql: "s.scoreSource",
|
|
2699
|
+
parameterType: "scalar"
|
|
2700
|
+
},
|
|
2637
2701
|
score: {
|
|
2638
2702
|
sql: "s.score",
|
|
2639
2703
|
parameterType: "scalar"
|
|
2704
|
+
},
|
|
2705
|
+
timestamp: {
|
|
2706
|
+
sql: "s.timestamp",
|
|
2707
|
+
parameterType: "timestamp"
|
|
2708
|
+
},
|
|
2709
|
+
spanId: {
|
|
2710
|
+
sql: "s.spanId",
|
|
2711
|
+
parameterType: "scalar"
|
|
2712
|
+
},
|
|
2713
|
+
entityVersionId: {
|
|
2714
|
+
sql: "s.entityVersionId",
|
|
2715
|
+
parameterType: "scalar"
|
|
2716
|
+
},
|
|
2717
|
+
parentEntityVersionId: {
|
|
2718
|
+
sql: "s.parentEntityVersionId",
|
|
2719
|
+
parameterType: "scalar"
|
|
2720
|
+
},
|
|
2721
|
+
rootEntityVersionId: {
|
|
2722
|
+
sql: "s.rootEntityVersionId",
|
|
2723
|
+
parameterType: "scalar"
|
|
2640
2724
|
}
|
|
2641
2725
|
};
|
|
2642
2726
|
const TRACE_SELECT = `
|
|
@@ -2658,12 +2742,15 @@ function fieldDefinition(registry, field) {
|
|
|
2658
2742
|
function parameterSql(type) {
|
|
2659
2743
|
return type === "timestamp" ? "CAST(? AS TIMESTAMP)" : "?";
|
|
2660
2744
|
}
|
|
2661
|
-
function
|
|
2745
|
+
function isMetadataField(field) {
|
|
2746
|
+
return field.startsWith("metadata.");
|
|
2747
|
+
}
|
|
2748
|
+
function compileScalarPredicate(predicate, registry, allowMetadata = false) {
|
|
2662
2749
|
if (predicate.type === "boolean") {
|
|
2663
2750
|
const values = [];
|
|
2664
2751
|
return {
|
|
2665
2752
|
sql: predicate.args.map((arg) => {
|
|
2666
|
-
const compiled = compileScalarPredicate(arg, registry);
|
|
2753
|
+
const compiled = compileScalarPredicate(arg, registry, allowMetadata);
|
|
2667
2754
|
values.push(...compiled.values);
|
|
2668
2755
|
return `(${compiled.sql})`;
|
|
2669
2756
|
}).join(predicate.operator === "and" ? " AND " : " OR "),
|
|
@@ -2671,26 +2758,45 @@ function compileScalarPredicate(predicate, registry) {
|
|
|
2671
2758
|
};
|
|
2672
2759
|
}
|
|
2673
2760
|
if (predicate.type === "not") {
|
|
2674
|
-
const compiled = compileScalarPredicate(predicate.arg, registry);
|
|
2761
|
+
const compiled = compileScalarPredicate(predicate.arg, registry, allowMetadata);
|
|
2675
2762
|
return {
|
|
2676
2763
|
sql: `NOT (${compiled.sql})`,
|
|
2677
2764
|
values: compiled.values
|
|
2678
2765
|
};
|
|
2679
2766
|
}
|
|
2680
|
-
|
|
2767
|
+
let field;
|
|
2768
|
+
let fieldValues = [];
|
|
2769
|
+
if (isMetadataField(predicate.field)) {
|
|
2770
|
+
if (!allowMetadata) throw new Error(`Unsupported trusted trace-query field: ${predicate.field}`);
|
|
2771
|
+
const key = predicate.field.slice(9);
|
|
2772
|
+
const path = `$.${JSON.stringify(key)}`;
|
|
2773
|
+
field = {
|
|
2774
|
+
sql: `NULLIF(trim(CASE WHEN json_type(r.metadata, ?) = 'VARCHAR' THEN json_extract_string(r.metadata, ?) END), '')`,
|
|
2775
|
+
parameterType: "scalar"
|
|
2776
|
+
};
|
|
2777
|
+
fieldValues = [path, path];
|
|
2778
|
+
} else field = fieldDefinition(registry, predicate.field);
|
|
2681
2779
|
if (predicate.type === "presence") return {
|
|
2682
2780
|
sql: `${field.sql} IS ${predicate.operator === "exists" ? "NOT " : ""}NULL`,
|
|
2683
|
-
values:
|
|
2781
|
+
values: fieldValues
|
|
2684
2782
|
};
|
|
2685
2783
|
if (predicate.type === "membership") {
|
|
2686
2784
|
const list = predicate.values.map(() => parameterSql(field.parameterType)).join(", ");
|
|
2687
2785
|
if (predicate.operator === "in") return {
|
|
2688
2786
|
sql: `${field.sql} IS NOT NULL AND ${field.sql} IN (${list})`,
|
|
2689
|
-
values:
|
|
2787
|
+
values: [
|
|
2788
|
+
...fieldValues,
|
|
2789
|
+
...fieldValues,
|
|
2790
|
+
...predicate.values
|
|
2791
|
+
]
|
|
2690
2792
|
};
|
|
2691
2793
|
return {
|
|
2692
2794
|
sql: `${field.sql} IS NULL OR ${field.sql} NOT IN (${list})`,
|
|
2693
|
-
values:
|
|
2795
|
+
values: [
|
|
2796
|
+
...fieldValues,
|
|
2797
|
+
...fieldValues,
|
|
2798
|
+
...predicate.values
|
|
2799
|
+
]
|
|
2694
2800
|
};
|
|
2695
2801
|
}
|
|
2696
2802
|
const parameter = parameterSql(field.parameterType);
|
|
@@ -2702,17 +2808,21 @@ function compileScalarPredicate(predicate, registry) {
|
|
|
2702
2808
|
};
|
|
2703
2809
|
if (predicate.operator === "eq") return {
|
|
2704
2810
|
sql: `${field.sql} IS NOT DISTINCT FROM ${parameter}`,
|
|
2705
|
-
values: [predicate.value]
|
|
2811
|
+
values: [...fieldValues, predicate.value]
|
|
2706
2812
|
};
|
|
2707
2813
|
if (predicate.operator === "ne") return {
|
|
2708
2814
|
sql: `${field.sql} IS DISTINCT FROM ${parameter}`,
|
|
2709
|
-
values: [predicate.value]
|
|
2815
|
+
values: [...fieldValues, predicate.value]
|
|
2710
2816
|
};
|
|
2711
2817
|
const operator = operators[predicate.operator];
|
|
2712
2818
|
if (operator === void 0) throw new Error(`Unsupported trusted trace-query operator: ${predicate.operator}`);
|
|
2713
2819
|
return {
|
|
2714
2820
|
sql: `${field.sql} IS NOT NULL AND ${field.sql} ${operator} ${parameter}`,
|
|
2715
|
-
values: [
|
|
2821
|
+
values: [
|
|
2822
|
+
...fieldValues,
|
|
2823
|
+
...fieldValues,
|
|
2824
|
+
predicate.value
|
|
2825
|
+
]
|
|
2716
2826
|
};
|
|
2717
2827
|
}
|
|
2718
2828
|
function compilePredicate(predicate) {
|
|
@@ -2748,7 +2858,7 @@ function compilePredicate(predicate) {
|
|
|
2748
2858
|
values: compiled.values
|
|
2749
2859
|
};
|
|
2750
2860
|
}
|
|
2751
|
-
return compileScalarPredicate(predicate, TRACE_FIELDS);
|
|
2861
|
+
return compileScalarPredicate(predicate, TRACE_FIELDS, true);
|
|
2752
2862
|
}
|
|
2753
2863
|
function collectRelatedCollections(predicate, collections = /* @__PURE__ */ new Set()) {
|
|
2754
2864
|
if (!predicate) return collections;
|
|
@@ -2797,18 +2907,43 @@ function compileDuckDBTraceQuery(plan) {
|
|
|
2797
2907
|
AND r.startedAt < CAST(? AS TIMESTAMP)
|
|
2798
2908
|
)`
|
|
2799
2909
|
];
|
|
2800
|
-
if (relatedCollections.has("spans")) ctes.push(`
|
|
2801
|
-
SELECT
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
e
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2910
|
+
if (relatedCollections.has("spans")) ctes.push(`current_span_rows AS (
|
|
2911
|
+
SELECT
|
|
2912
|
+
e.*,
|
|
2913
|
+
coalesce(
|
|
2914
|
+
min(e.timestamp) FILTER (WHERE e.eventType = 'start') OVER (PARTITION BY e.traceId, e.spanId),
|
|
2915
|
+
min(e.timestamp) OVER (PARTITION BY e.traceId, e.spanId)
|
|
2916
|
+
) AS startedAt,
|
|
2917
|
+
row_number() OVER (
|
|
2918
|
+
PARTITION BY e.traceId, e.spanId
|
|
2919
|
+
ORDER BY CASE WHEN e.endedAt IS NULL THEN 1 ELSE 0 END ASC, e.cursorId DESC
|
|
2920
|
+
) AS currentRank
|
|
2921
|
+
FROM span_events e
|
|
2922
|
+
INNER JOIN root_scope roots ON roots.traceId = e.traceId
|
|
2923
|
+
),
|
|
2924
|
+
current_spans AS (
|
|
2925
|
+
SELECT
|
|
2926
|
+
traceId,
|
|
2927
|
+
name,
|
|
2928
|
+
spanType,
|
|
2929
|
+
CASE
|
|
2930
|
+
WHEN json_type(attributes, '$.model') = 'VARCHAR' THEN json_extract_string(attributes, '$.model')
|
|
2931
|
+
END AS model,
|
|
2932
|
+
CASE
|
|
2933
|
+
WHEN json_type(attributes, '$.provider') = 'VARCHAR' THEN json_extract_string(attributes, '$.provider')
|
|
2934
|
+
END AS provider,
|
|
2935
|
+
startedAt,
|
|
2936
|
+
endedAt,
|
|
2937
|
+
date_diff('millisecond', startedAt, endedAt) AS durationMs,
|
|
2938
|
+
CASE WHEN error IS NOT NULL THEN 'error' ELSE 'success' END AS status,
|
|
2939
|
+
error,
|
|
2940
|
+
entityType,
|
|
2941
|
+
entityId,
|
|
2942
|
+
entityName,
|
|
2943
|
+
entityVersionId,
|
|
2944
|
+
parentEntityVersionId,
|
|
2945
|
+
rootEntityVersionId
|
|
2946
|
+
FROM current_span_rows
|
|
2812
2947
|
WHERE currentRank = 1
|
|
2813
2948
|
)`);
|
|
2814
2949
|
if (relatedCollections.has("scores")) ctes.push(`current_scores AS (
|
|
@@ -2913,6 +3048,8 @@ const COLUMNS_SQL = [
|
|
|
2913
3048
|
"entityId",
|
|
2914
3049
|
"entityName",
|
|
2915
3050
|
"entityVersionId",
|
|
3051
|
+
"parentEntityVersionId",
|
|
3052
|
+
"rootEntityVersionId",
|
|
2916
3053
|
"userId",
|
|
2917
3054
|
"organizationId",
|
|
2918
3055
|
"resourceId",
|
|
@@ -2955,6 +3092,8 @@ const SPAN_RECONSTRUCT_SELECT = `
|
|
|
2955
3092
|
${argMaxNonNull("entityId")},
|
|
2956
3093
|
${argMaxNonNull("entityName")},
|
|
2957
3094
|
${argMaxNonNull("entityVersionId")},
|
|
3095
|
+
${argMaxNonNull("parentEntityVersionId")},
|
|
3096
|
+
${argMaxNonNull("rootEntityVersionId")},
|
|
2958
3097
|
${argMaxNonNull("userId")},
|
|
2959
3098
|
${argMaxNonNull("organizationId")},
|
|
2960
3099
|
${argMaxNonNull("resourceId")},
|
|
@@ -3122,6 +3261,8 @@ function rowToSpanRecord(row) {
|
|
|
3122
3261
|
entityId: row.entityId ?? null,
|
|
3123
3262
|
entityName: row.entityName ?? null,
|
|
3124
3263
|
entityVersionId: row.entityVersionId ?? null,
|
|
3264
|
+
parentEntityVersionId: row.parentEntityVersionId ?? null,
|
|
3265
|
+
rootEntityVersionId: row.rootEntityVersionId ?? null,
|
|
3125
3266
|
userId: row.userId ?? null,
|
|
3126
3267
|
organizationId: row.organizationId ?? null,
|
|
3127
3268
|
resourceId: row.resourceId ?? null,
|
|
@@ -3277,6 +3418,8 @@ function toValuesTuple(row) {
|
|
|
3277
3418
|
v(row.entityId),
|
|
3278
3419
|
v(row.entityName),
|
|
3279
3420
|
v(row.entityVersionId),
|
|
3421
|
+
v(row.parentEntityVersionId),
|
|
3422
|
+
v(row.rootEntityVersionId),
|
|
3280
3423
|
v(row.userId),
|
|
3281
3424
|
v(row.organizationId),
|
|
3282
3425
|
v(row.resourceId),
|
|
@@ -3319,6 +3462,8 @@ function createStartSpanRow(s) {
|
|
|
3319
3462
|
entityId: s.entityId ?? null,
|
|
3320
3463
|
entityName: s.entityName ?? null,
|
|
3321
3464
|
entityVersionId: s.entityVersionId ?? null,
|
|
3465
|
+
parentEntityVersionId: s.parentEntityVersionId ?? null,
|
|
3466
|
+
rootEntityVersionId: s.rootEntityVersionId ?? null,
|
|
3322
3467
|
userId: s.userId ?? null,
|
|
3323
3468
|
organizationId: s.organizationId ?? null,
|
|
3324
3469
|
resourceId: s.resourceId ?? null,
|
|
@@ -3356,6 +3501,8 @@ function createEndSpanRow(s) {
|
|
|
3356
3501
|
entityId: s.entityId ?? null,
|
|
3357
3502
|
entityName: s.entityName ?? null,
|
|
3358
3503
|
entityVersionId: s.entityVersionId ?? null,
|
|
3504
|
+
parentEntityVersionId: s.parentEntityVersionId ?? null,
|
|
3505
|
+
rootEntityVersionId: s.rootEntityVersionId ?? null,
|
|
3359
3506
|
userId: s.userId ?? null,
|
|
3360
3507
|
organizationId: s.organizationId ?? null,
|
|
3361
3508
|
resourceId: s.resourceId ?? null,
|
|
@@ -4268,4 +4415,4 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
|
|
|
4268
4415
|
//#endregion
|
|
4269
4416
|
exports.ObservabilityStorageDuckDB = ObservabilityStorageDuckDB;
|
|
4270
4417
|
|
|
4271
|
-
//# sourceMappingURL=observability-
|
|
4418
|
+
//# sourceMappingURL=observability-VHURnMMH.cjs.map
|