@absolutejs/absolute 0.19.0-beta.534 → 0.19.0-beta.536
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/ai/client/index.js +174 -3
- package/dist/ai/client/index.js.map +4 -4
- package/dist/ai/index.js +176 -3
- package/dist/ai/index.js.map +4 -4
- package/dist/ai-client/react/ai/index.js +5 -2
- package/dist/ai-client/vue/ai/index.js +5 -2
- package/dist/angular/ai/index.js +64 -1
- package/dist/angular/ai/index.js.map +3 -3
- package/dist/react/ai/index.js +174 -3
- package/dist/react/ai/index.js.map +4 -4
- package/dist/src/ai/index.d.ts +1 -1
- package/dist/src/ai/rag/index.d.ts +1 -1
- package/dist/src/ai/rag/presentation.d.ts +3 -1
- package/dist/src/ai/rag/quality.d.ts +5 -2
- package/dist/src/react/ai/useRAG.d.ts +2 -0
- package/dist/src/react/ai/useRAGEvaluate.d.ts +2 -0
- package/dist/src/svelte/ai/createRAG.d.ts +2 -0
- package/dist/src/svelte/ai/createRAGEvaluate.d.ts +2 -0
- package/dist/src/vue/ai/useRAG.d.ts +92 -0
- package/dist/src/vue/ai/useRAGEvaluate.d.ts +92 -0
- package/dist/svelte/ai/index.js +174 -3
- package/dist/svelte/ai/index.js.map +4 -4
- package/dist/types/ai.d.ts +40 -0
- package/dist/vue/ai/index.js +174 -3
- package/dist/vue/ai/index.js.map +4 -4
- package/package.json +7 -7
package/dist/ai/client/index.js
CHANGED
|
@@ -804,6 +804,69 @@ var formatTimestampLabel = (value) => {
|
|
|
804
804
|
timeStyle: "short"
|
|
805
805
|
});
|
|
806
806
|
};
|
|
807
|
+
var formatRAGTraceValue = (value) => {
|
|
808
|
+
if (typeof value === "string")
|
|
809
|
+
return value;
|
|
810
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
811
|
+
return String(value);
|
|
812
|
+
}
|
|
813
|
+
if (Array.isArray(value)) {
|
|
814
|
+
return value.join(", ");
|
|
815
|
+
}
|
|
816
|
+
if (value && typeof value === "object") {
|
|
817
|
+
return JSON.stringify(value);
|
|
818
|
+
}
|
|
819
|
+
return "n/a";
|
|
820
|
+
};
|
|
821
|
+
var buildRAGRetrievalTracePresentation = (trace) => {
|
|
822
|
+
if (!trace) {
|
|
823
|
+
return {
|
|
824
|
+
details: [],
|
|
825
|
+
stats: [],
|
|
826
|
+
steps: []
|
|
827
|
+
};
|
|
828
|
+
}
|
|
829
|
+
const stats = [
|
|
830
|
+
{ label: "Mode", value: trace.mode },
|
|
831
|
+
{ label: "Final Results", value: String(trace.resultCounts.final) },
|
|
832
|
+
{
|
|
833
|
+
label: "Vector Candidates",
|
|
834
|
+
value: String(trace.resultCounts.vector)
|
|
835
|
+
},
|
|
836
|
+
{
|
|
837
|
+
label: "Lexical Candidates",
|
|
838
|
+
value: String(trace.resultCounts.lexical)
|
|
839
|
+
}
|
|
840
|
+
];
|
|
841
|
+
const details = [
|
|
842
|
+
{ label: "Transformed query", value: trace.transformedQuery },
|
|
843
|
+
{
|
|
844
|
+
label: "Variant queries",
|
|
845
|
+
value: trace.variantQueries.length > 0 ? trace.variantQueries.join(" \xB7 ") : "none"
|
|
846
|
+
},
|
|
847
|
+
{ label: "Candidate topK", value: String(trace.candidateTopK) },
|
|
848
|
+
{ label: "Lexical topK", value: String(trace.lexicalTopK) }
|
|
849
|
+
];
|
|
850
|
+
const steps = trace.steps.map((step) => ({
|
|
851
|
+
count: step.count,
|
|
852
|
+
label: step.label,
|
|
853
|
+
rows: [
|
|
854
|
+
{ label: "stage", value: step.stage },
|
|
855
|
+
...typeof step.count === "number" ? [{ label: "count", value: String(step.count) }] : [],
|
|
856
|
+
...typeof step.durationMs === "number" ? [{ label: "durationMs", value: String(step.durationMs) }] : [],
|
|
857
|
+
...Object.entries(step.metadata ?? {}).map(([key, value]) => ({
|
|
858
|
+
label: key,
|
|
859
|
+
value: formatRAGTraceValue(value)
|
|
860
|
+
}))
|
|
861
|
+
],
|
|
862
|
+
stage: step.stage
|
|
863
|
+
}));
|
|
864
|
+
return {
|
|
865
|
+
details,
|
|
866
|
+
stats,
|
|
867
|
+
steps
|
|
868
|
+
};
|
|
869
|
+
};
|
|
807
870
|
var formatMediaTimestamp = (value) => {
|
|
808
871
|
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
809
872
|
return;
|
|
@@ -2130,6 +2193,98 @@ var buildGroundingCaseSnapshots = ({
|
|
|
2130
2193
|
};
|
|
2131
2194
|
});
|
|
2132
2195
|
};
|
|
2196
|
+
var areStageCountsEqual = (left, right) => {
|
|
2197
|
+
const keys = new Set([
|
|
2198
|
+
...Object.keys(left),
|
|
2199
|
+
...Object.keys(right)
|
|
2200
|
+
]);
|
|
2201
|
+
for (const key of keys) {
|
|
2202
|
+
if ((left[key] ?? 0) !== (right[key] ?? 0)) {
|
|
2203
|
+
return false;
|
|
2204
|
+
}
|
|
2205
|
+
}
|
|
2206
|
+
return true;
|
|
2207
|
+
};
|
|
2208
|
+
var buildEvaluationCaseTraceSnapshot = ({
|
|
2209
|
+
caseResult,
|
|
2210
|
+
currentTrace,
|
|
2211
|
+
previousTrace
|
|
2212
|
+
}) => {
|
|
2213
|
+
const stageCounts = currentTrace ? buildTraceStageCounts([currentTrace]) : {};
|
|
2214
|
+
const previousStageCounts = previousTrace?.stageCounts ?? {};
|
|
2215
|
+
const traceChange = !previousTrace ? currentTrace ? "new" : "unchanged" : previousTrace.traceMode !== currentTrace?.mode || previousTrace.transformedQuery !== (currentTrace?.transformedQuery || undefined) || previousTrace.variantQueries.join("|") !== (currentTrace?.variantQueries ?? []).join("|") || previousTrace.finalCount !== (currentTrace?.resultCounts.final ?? 0) || previousTrace.vectorCount !== (currentTrace?.resultCounts.vector ?? 0) || previousTrace.lexicalCount !== (currentTrace?.resultCounts.lexical ?? 0) || previousTrace.candidateTopK !== (currentTrace?.candidateTopK ?? 0) || previousTrace.lexicalTopK !== (currentTrace?.lexicalTopK ?? 0) || !areStageCountsEqual(previousStageCounts, stageCounts) ? "changed" : "unchanged";
|
|
2216
|
+
return {
|
|
2217
|
+
candidateTopK: currentTrace?.candidateTopK ?? 0,
|
|
2218
|
+
caseId: caseResult.caseId,
|
|
2219
|
+
finalCount: currentTrace?.resultCounts.final ?? 0,
|
|
2220
|
+
label: caseResult.label,
|
|
2221
|
+
lexicalCount: currentTrace?.resultCounts.lexical ?? 0,
|
|
2222
|
+
lexicalTopK: currentTrace?.lexicalTopK ?? 0,
|
|
2223
|
+
previousCandidateTopK: previousTrace?.candidateTopK,
|
|
2224
|
+
previousFinalCount: previousTrace?.finalCount,
|
|
2225
|
+
previousLexicalCount: previousTrace?.lexicalCount,
|
|
2226
|
+
previousLexicalTopK: previousTrace?.lexicalTopK,
|
|
2227
|
+
previousStageCounts,
|
|
2228
|
+
previousTraceMode: previousTrace?.traceMode,
|
|
2229
|
+
previousTransformedQuery: previousTrace?.transformedQuery,
|
|
2230
|
+
previousVariantQueries: previousTrace?.variantQueries ?? [],
|
|
2231
|
+
previousVectorCount: previousTrace?.vectorCount,
|
|
2232
|
+
query: caseResult.query,
|
|
2233
|
+
stageCounts,
|
|
2234
|
+
status: caseResult.status,
|
|
2235
|
+
traceChange,
|
|
2236
|
+
traceMode: currentTrace?.mode,
|
|
2237
|
+
transformedQuery: currentTrace?.transformedQuery || undefined,
|
|
2238
|
+
variantQueries: currentTrace?.variantQueries ?? [],
|
|
2239
|
+
vectorCount: currentTrace?.resultCounts.vector ?? 0
|
|
2240
|
+
};
|
|
2241
|
+
};
|
|
2242
|
+
var buildEvaluationCaseTraceSnapshotsFromEvaluated = (evaluated) => evaluated.map(({ caseResult, trace }) => buildEvaluationCaseTraceSnapshot({
|
|
2243
|
+
caseResult,
|
|
2244
|
+
currentTrace: trace
|
|
2245
|
+
}));
|
|
2246
|
+
var buildEvaluationCaseTraceSnapshots = ({
|
|
2247
|
+
current,
|
|
2248
|
+
previous
|
|
2249
|
+
}) => {
|
|
2250
|
+
if (!current) {
|
|
2251
|
+
return [];
|
|
2252
|
+
}
|
|
2253
|
+
const currentTraces = new Map((current.caseTraceSnapshots ?? []).map((entry) => [entry.caseId, entry]));
|
|
2254
|
+
const previousTraces = new Map((previous?.caseTraceSnapshots ?? []).map((entry) => [
|
|
2255
|
+
entry.caseId,
|
|
2256
|
+
entry
|
|
2257
|
+
]));
|
|
2258
|
+
return current.response.cases.map((caseResult) => buildEvaluationCaseTraceSnapshot({
|
|
2259
|
+
caseResult,
|
|
2260
|
+
currentTrace: (() => {
|
|
2261
|
+
const currentSnapshot = currentTraces.get(caseResult.caseId);
|
|
2262
|
+
if (!currentSnapshot) {
|
|
2263
|
+
return;
|
|
2264
|
+
}
|
|
2265
|
+
return {
|
|
2266
|
+
candidateTopK: currentSnapshot.candidateTopK,
|
|
2267
|
+
lexicalTopK: currentSnapshot.lexicalTopK,
|
|
2268
|
+
mode: currentSnapshot.traceMode ?? "vector",
|
|
2269
|
+
query: caseResult.query,
|
|
2270
|
+
resultCounts: {
|
|
2271
|
+
final: currentSnapshot.finalCount,
|
|
2272
|
+
fused: currentSnapshot.finalCount,
|
|
2273
|
+
lexical: currentSnapshot.lexicalCount,
|
|
2274
|
+
reranked: currentSnapshot.finalCount,
|
|
2275
|
+
vector: currentSnapshot.vectorCount
|
|
2276
|
+
},
|
|
2277
|
+
runLexical: currentSnapshot.lexicalCount > 0,
|
|
2278
|
+
runVector: currentSnapshot.vectorCount > 0,
|
|
2279
|
+
steps: [],
|
|
2280
|
+
topK: caseResult.topK,
|
|
2281
|
+
transformedQuery: currentSnapshot.transformedQuery ?? caseResult.query,
|
|
2282
|
+
variantQueries: currentSnapshot.variantQueries
|
|
2283
|
+
};
|
|
2284
|
+
})(),
|
|
2285
|
+
previousTrace: previousTraces.get(caseResult.caseId)
|
|
2286
|
+
}));
|
|
2287
|
+
};
|
|
2133
2288
|
var getStatusRank = (status) => status === "pass" ? 2 : status === "partial" ? 1 : 0;
|
|
2134
2289
|
var formatSignedDelta = (value, decimals = 0, suffix = "") => `${value >= 0 ? "+" : ""}${value.toFixed(decimals)}${suffix}`;
|
|
2135
2290
|
var formatEvaluationSummary = (response) => `${response.summary.passedCases}/${response.totalCases} pass \xB7 f1 ${response.summary.averageF1.toFixed(3)} \xB7 latency ${response.summary.averageLatencyMs.toFixed(1)}ms`;
|
|
@@ -2289,6 +2444,13 @@ var buildRAGEvaluationHistoryRows = (history) => {
|
|
|
2289
2444
|
rows.push({ label: "Trace stage delta", value: stageDelta });
|
|
2290
2445
|
}
|
|
2291
2446
|
}
|
|
2447
|
+
if (history.caseTraceSnapshots.length > 0) {
|
|
2448
|
+
const changedCases = history.caseTraceSnapshots.filter((entry) => entry.traceChange === "changed");
|
|
2449
|
+
rows.push({
|
|
2450
|
+
label: "Trace drift cases",
|
|
2451
|
+
value: changedCases.length > 0 ? changedCases.map((entry) => entry.label ?? entry.caseId).slice(0, 4).join(", ") : "none"
|
|
2452
|
+
});
|
|
2453
|
+
}
|
|
2292
2454
|
return rows;
|
|
2293
2455
|
};
|
|
2294
2456
|
var buildRAGEvaluationRunDiff = ({
|
|
@@ -2478,6 +2640,10 @@ var loadRAGEvaluationHistory = async ({
|
|
|
2478
2640
|
const latestRun = runs[0];
|
|
2479
2641
|
const previousRun = runs[1];
|
|
2480
2642
|
return {
|
|
2643
|
+
caseTraceSnapshots: buildEvaluationCaseTraceSnapshots({
|
|
2644
|
+
current: latestRun,
|
|
2645
|
+
previous: previousRun
|
|
2646
|
+
}),
|
|
2481
2647
|
diff: latestRun && previousRun ? buildRAGEvaluationRunDiff({
|
|
2482
2648
|
current: latestRun,
|
|
2483
2649
|
previous: previousRun
|
|
@@ -2689,6 +2855,7 @@ var compareRAGRerankers = async ({
|
|
|
2689
2855
|
});
|
|
2690
2856
|
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2691
2857
|
return {
|
|
2858
|
+
caseTraceSnapshots: buildEvaluationCaseTraceSnapshotsFromEvaluated(evaluated),
|
|
2692
2859
|
label: candidate.label ?? candidate.id,
|
|
2693
2860
|
providerName: typeof candidate.rerank === "function" ? undefined : candidate.rerank?.providerName,
|
|
2694
2861
|
response,
|
|
@@ -2775,6 +2942,7 @@ var compareRAGRetrievalStrategies = async ({
|
|
|
2775
2942
|
});
|
|
2776
2943
|
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2777
2944
|
return {
|
|
2945
|
+
caseTraceSnapshots: buildEvaluationCaseTraceSnapshotsFromEvaluated(evaluated),
|
|
2778
2946
|
label: candidate.label ?? candidate.id,
|
|
2779
2947
|
response,
|
|
2780
2948
|
retrievalId: candidate.id,
|
|
@@ -2843,7 +3011,8 @@ var executeDryRunRAGEvaluation = (input, defaultTopK = DEFAULT_TOP_K) => input.c
|
|
|
2843
3011
|
var runRAGEvaluationSuite = async ({
|
|
2844
3012
|
suite,
|
|
2845
3013
|
evaluate,
|
|
2846
|
-
overrides
|
|
3014
|
+
overrides,
|
|
3015
|
+
artifacts
|
|
2847
3016
|
}) => {
|
|
2848
3017
|
const startedAt = Date.now();
|
|
2849
3018
|
const response = await evaluate({
|
|
@@ -2853,6 +3022,7 @@ var runRAGEvaluationSuite = async ({
|
|
|
2853
3022
|
});
|
|
2854
3023
|
const finishedAt = Date.now();
|
|
2855
3024
|
return {
|
|
3025
|
+
caseTraceSnapshots: artifacts?.caseTraceSnapshots,
|
|
2856
3026
|
elapsedMs: finishedAt - startedAt,
|
|
2857
3027
|
finishedAt,
|
|
2858
3028
|
id: generateId(),
|
|
@@ -2860,7 +3030,8 @@ var runRAGEvaluationSuite = async ({
|
|
|
2860
3030
|
metadata: suite.metadata,
|
|
2861
3031
|
response,
|
|
2862
3032
|
startedAt,
|
|
2863
|
-
suiteId: suite.id
|
|
3033
|
+
suiteId: suite.id,
|
|
3034
|
+
traceSummary: artifacts?.traceSummary
|
|
2864
3035
|
};
|
|
2865
3036
|
};
|
|
2866
3037
|
var summarizeRAGEvaluationCase = ({
|
|
@@ -2934,5 +3105,5 @@ export {
|
|
|
2934
3105
|
buildRAGAnswerWorkflowState
|
|
2935
3106
|
};
|
|
2936
3107
|
|
|
2937
|
-
//# debugId=
|
|
3108
|
+
//# debugId=0D0362F3A383A2F164756E2164756E21
|
|
2938
3109
|
//# sourceMappingURL=index.js.map
|