@mastra/duckdb 1.8.0-alpha.1 → 1.8.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-DlMgmuxw.cjs → observability-BZcL6fKR.cjs} +117 -7
- package/dist/observability-BZcL6fKR.cjs.map +1 -0
- package/dist/{observability-2dvzwZpP.js → observability-COgD6BOK.js} +117 -7
- package/dist/observability-COgD6BOK.js.map +1 -0
- package/dist/storage/domains/observability/feedback.d.ts.map +1 -1
- package/dist/storage/domains/observability/trace-query.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/observability-2dvzwZpP.js.map +0 -1
- package/dist/observability-DlMgmuxw.cjs.map +0 -1
package/dist/docs/SKILL.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -528,7 +528,7 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
|
|
|
528
528
|
async loadDelegate() {
|
|
529
529
|
if (this.delegate) return this.delegate;
|
|
530
530
|
if (this.unavailableError) return null;
|
|
531
|
-
if (!this.loadPromise) this.loadPromise = Promise.resolve().then(() => require("./observability-
|
|
531
|
+
if (!this.loadPromise) this.loadPromise = Promise.resolve().then(() => require("./observability-BZcL6fKR.cjs")).then(({ ObservabilityStorageDuckDB }) => {
|
|
532
532
|
const delegate = new ObservabilityStorageDuckDB({ db: this.db });
|
|
533
533
|
this.delegate = delegate;
|
|
534
534
|
return delegate;
|
package/dist/index.js
CHANGED
|
@@ -527,7 +527,7 @@ var ObservabilityStorageDuckDB = class extends ObservabilityStorage {
|
|
|
527
527
|
async loadDelegate() {
|
|
528
528
|
if (this.delegate) return this.delegate;
|
|
529
529
|
if (this.unavailableError) return null;
|
|
530
|
-
if (!this.loadPromise) this.loadPromise = import("./observability-
|
|
530
|
+
if (!this.loadPromise) this.loadPromise = import("./observability-COgD6BOK.js").then(({ ObservabilityStorageDuckDB }) => {
|
|
531
531
|
const delegate = new ObservabilityStorageDuckDB({ db: this.db });
|
|
532
532
|
this.delegate = delegate;
|
|
533
533
|
return delegate;
|
|
@@ -767,6 +767,45 @@ function parseUpdateFeedbackReviewStatusArgs(args) {
|
|
|
767
767
|
}
|
|
768
768
|
//#endregion
|
|
769
769
|
//#region src/storage/domains/observability/feedback.ts
|
|
770
|
+
const FEEDBACK_UPSERT_CLAUSE = `ON CONFLICT (feedbackId) DO UPDATE SET ${[
|
|
771
|
+
"timestamp",
|
|
772
|
+
"cursorId",
|
|
773
|
+
"traceId",
|
|
774
|
+
"spanId",
|
|
775
|
+
"experimentId",
|
|
776
|
+
"entityType",
|
|
777
|
+
"entityId",
|
|
778
|
+
"entityName",
|
|
779
|
+
"entityVersionId",
|
|
780
|
+
"parentEntityVersionId",
|
|
781
|
+
"parentEntityType",
|
|
782
|
+
"parentEntityId",
|
|
783
|
+
"parentEntityName",
|
|
784
|
+
"rootEntityVersionId",
|
|
785
|
+
"rootEntityType",
|
|
786
|
+
"rootEntityId",
|
|
787
|
+
"rootEntityName",
|
|
788
|
+
"userId",
|
|
789
|
+
"organizationId",
|
|
790
|
+
"resourceId",
|
|
791
|
+
"runId",
|
|
792
|
+
"sessionId",
|
|
793
|
+
"threadId",
|
|
794
|
+
"requestId",
|
|
795
|
+
"environment",
|
|
796
|
+
"executionSource",
|
|
797
|
+
"serviceName",
|
|
798
|
+
"feedbackUserId",
|
|
799
|
+
"sourceId",
|
|
800
|
+
"reviewStatus",
|
|
801
|
+
"feedbackSource",
|
|
802
|
+
"feedbackType",
|
|
803
|
+
"value",
|
|
804
|
+
"comment",
|
|
805
|
+
"tags",
|
|
806
|
+
"metadata",
|
|
807
|
+
"scope"
|
|
808
|
+
].map((column) => `${column} = excluded.${column}`).join(", ")}`;
|
|
770
809
|
const FEEDBACK_GROUP_BY_COLUMNS = /* @__PURE__ */ new Set([
|
|
771
810
|
"timestamp",
|
|
772
811
|
"traceId",
|
|
@@ -983,12 +1022,12 @@ async function createFeedback(db, args) {
|
|
|
983
1022
|
jsonV(f.metadata),
|
|
984
1023
|
jsonV(f.scope ?? null)
|
|
985
1024
|
].join(", ")})
|
|
986
|
-
|
|
1025
|
+
${FEEDBACK_UPSERT_CLAUSE}`);
|
|
987
1026
|
}
|
|
988
1027
|
/** Insert multiple feedback events in a single statement. */
|
|
989
1028
|
async function batchCreateFeedback(db, args) {
|
|
990
1029
|
if (args.feedbacks.length === 0) return;
|
|
991
|
-
const tuples = args.feedbacks.map((f) => {
|
|
1030
|
+
const tuples = [...new Map(args.feedbacks.map((feedback) => [feedback.feedbackId, feedback])).values()].map((f) => {
|
|
992
1031
|
const legacyFeedback = f;
|
|
993
1032
|
const feedbackSource = legacyFeedback.feedbackSource ?? legacyFeedback.source ?? "";
|
|
994
1033
|
const feedbackUserId = legacyFeedback.feedbackUserId ?? legacyFeedback.userId ?? null;
|
|
@@ -1040,7 +1079,7 @@ async function batchCreateFeedback(db, args) {
|
|
|
1040
1079
|
feedbackUserId, sourceId, reviewStatus, feedbackSource, feedbackType, value, comment, tags, metadata, scope
|
|
1041
1080
|
)
|
|
1042
1081
|
VALUES ${tuples.join(",\n ")}
|
|
1043
|
-
|
|
1082
|
+
${FEEDBACK_UPSERT_CLAUSE}`);
|
|
1044
1083
|
}
|
|
1045
1084
|
/**
|
|
1046
1085
|
* Delete feedback events by feedbackId. Optional `organizationId` and
|
|
@@ -2761,6 +2800,44 @@ const SCORE_FIELDS = {
|
|
|
2761
2800
|
parameterType: "scalar"
|
|
2762
2801
|
}
|
|
2763
2802
|
};
|
|
2803
|
+
const FEEDBACK_FIELDS = {
|
|
2804
|
+
feedbackType: {
|
|
2805
|
+
sql: "s.feedbackType",
|
|
2806
|
+
parameterType: "scalar"
|
|
2807
|
+
},
|
|
2808
|
+
feedbackSource: {
|
|
2809
|
+
sql: "s.feedbackSource",
|
|
2810
|
+
parameterType: "scalar"
|
|
2811
|
+
},
|
|
2812
|
+
feedbackUserId: {
|
|
2813
|
+
sql: "s.feedbackUserId",
|
|
2814
|
+
parameterType: "scalar"
|
|
2815
|
+
},
|
|
2816
|
+
sourceId: {
|
|
2817
|
+
sql: "s.sourceId",
|
|
2818
|
+
parameterType: "scalar"
|
|
2819
|
+
},
|
|
2820
|
+
entityVersionId: {
|
|
2821
|
+
sql: "s.entityVersionId",
|
|
2822
|
+
parameterType: "scalar"
|
|
2823
|
+
},
|
|
2824
|
+
parentEntityVersionId: {
|
|
2825
|
+
sql: "s.parentEntityVersionId",
|
|
2826
|
+
parameterType: "scalar"
|
|
2827
|
+
},
|
|
2828
|
+
rootEntityVersionId: {
|
|
2829
|
+
sql: "s.rootEntityVersionId",
|
|
2830
|
+
parameterType: "scalar"
|
|
2831
|
+
},
|
|
2832
|
+
timestamp: {
|
|
2833
|
+
sql: "s.timestamp",
|
|
2834
|
+
parameterType: "timestamp"
|
|
2835
|
+
},
|
|
2836
|
+
comment: {
|
|
2837
|
+
sql: "s.comment",
|
|
2838
|
+
parameterType: "scalar"
|
|
2839
|
+
}
|
|
2840
|
+
};
|
|
2764
2841
|
const TRACE_SELECT = `
|
|
2765
2842
|
r.traceId AS traceId,
|
|
2766
2843
|
r.spanId AS rootSpanId,
|
|
@@ -2863,12 +2940,40 @@ function compileScalarPredicate(predicate, registry, allowMetadata = false) {
|
|
|
2863
2940
|
]
|
|
2864
2941
|
};
|
|
2865
2942
|
}
|
|
2943
|
+
function compileFeedbackScalarPredicate(predicate) {
|
|
2944
|
+
if (predicate.type === "boolean") {
|
|
2945
|
+
const values = [];
|
|
2946
|
+
return {
|
|
2947
|
+
sql: predicate.args.map((arg) => {
|
|
2948
|
+
const compiled = compileFeedbackScalarPredicate(arg);
|
|
2949
|
+
values.push(...compiled.values);
|
|
2950
|
+
return `(${compiled.sql})`;
|
|
2951
|
+
}).join(predicate.operator === "and" ? " AND " : " OR "),
|
|
2952
|
+
values
|
|
2953
|
+
};
|
|
2954
|
+
}
|
|
2955
|
+
if (predicate.type === "not") {
|
|
2956
|
+
const compiled = compileFeedbackScalarPredicate(predicate.arg);
|
|
2957
|
+
return {
|
|
2958
|
+
sql: `NOT (${compiled.sql})`,
|
|
2959
|
+
values: compiled.values
|
|
2960
|
+
};
|
|
2961
|
+
}
|
|
2962
|
+
if (predicate.field !== "value") return compileScalarPredicate(predicate, FEEDBACK_FIELDS);
|
|
2963
|
+
if (predicate.type === "presence") return {
|
|
2964
|
+
sql: `s.value IS ${predicate.operator === "exists" ? "NOT " : ""}NULL`,
|
|
2965
|
+
values: []
|
|
2966
|
+
};
|
|
2967
|
+
return compileScalarPredicate(predicate, { value: {
|
|
2968
|
+
sql: typeof (predicate.type === "membership" ? predicate.values[0] : predicate.value) === "number" ? "TRY_CAST(s.value AS DOUBLE)" : "s.value",
|
|
2969
|
+
parameterType: "scalar"
|
|
2970
|
+
} });
|
|
2971
|
+
}
|
|
2866
2972
|
function compilePredicate(predicate) {
|
|
2867
2973
|
if (predicate.type === "relation") {
|
|
2868
|
-
const
|
|
2869
|
-
const compiled = compileScalarPredicate(predicate.predicate, registry);
|
|
2974
|
+
const compiled = predicate.collection === "feedback" ? compileFeedbackScalarPredicate(predicate.predicate) : compileScalarPredicate(predicate.predicate, predicate.collection === "spans" ? SPAN_FIELDS : SCORE_FIELDS);
|
|
2870
2975
|
const existence = `EXISTS (
|
|
2871
|
-
SELECT 1 FROM ${predicate.collection === "spans" ? "current_spans" : "current_scores"} s
|
|
2976
|
+
SELECT 1 FROM ${predicate.collection === "spans" ? "current_spans" : predicate.collection === "scores" ? "current_scores" : "current_feedback"} s
|
|
2872
2977
|
WHERE s.traceId IS NOT NULL
|
|
2873
2978
|
AND s.traceId = r.traceId
|
|
2874
2979
|
AND (${compiled.sql})
|
|
@@ -2988,6 +3093,11 @@ function compileDuckDBTraceQuery(plan) {
|
|
|
2988
3093
|
SELECT s.*
|
|
2989
3094
|
FROM score_events s
|
|
2990
3095
|
INNER JOIN root_scope roots ON roots.traceId = s.traceId
|
|
3096
|
+
)`);
|
|
3097
|
+
if (relatedCollections.has("feedback")) ctes.push(`current_feedback AS (
|
|
3098
|
+
SELECT f.*
|
|
3099
|
+
FROM feedback_events f
|
|
3100
|
+
INNER JOIN root_scope roots ON roots.traceId = f.traceId
|
|
2991
3101
|
)`);
|
|
2992
3102
|
ctes.push(`candidates AS (
|
|
2993
3103
|
SELECT ${TRACE_SELECT}
|
|
@@ -4459,4 +4569,4 @@ var ObservabilityStorageDuckDB = class extends _mastra_core_storage.Observabilit
|
|
|
4459
4569
|
//#endregion
|
|
4460
4570
|
exports.ObservabilityStorageDuckDB = ObservabilityStorageDuckDB;
|
|
4461
4571
|
|
|
4462
|
-
//# sourceMappingURL=observability-
|
|
4572
|
+
//# sourceMappingURL=observability-BZcL6fKR.cjs.map
|