@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/types/ai.d.ts
CHANGED
|
@@ -1195,6 +1195,7 @@ export type RAGEvaluationSuiteRun = {
|
|
|
1195
1195
|
elapsedMs: number;
|
|
1196
1196
|
response: RAGEvaluationResponse;
|
|
1197
1197
|
traceSummary?: RAGRetrievalTraceComparisonSummary;
|
|
1198
|
+
caseTraceSnapshots?: RAGEvaluationCaseTraceSnapshot[];
|
|
1198
1199
|
metadata?: Record<string, unknown>;
|
|
1199
1200
|
};
|
|
1200
1201
|
export type RAGEvaluationHistoryStore = {
|
|
@@ -1246,11 +1247,37 @@ export type RAGEvaluationRunDiff = {
|
|
|
1246
1247
|
stageCounts: Partial<Record<RAGRetrievalTraceStage, number>>;
|
|
1247
1248
|
};
|
|
1248
1249
|
};
|
|
1250
|
+
export type RAGEvaluationCaseTraceSnapshot = {
|
|
1251
|
+
caseId: string;
|
|
1252
|
+
label?: string;
|
|
1253
|
+
query: string;
|
|
1254
|
+
status: RAGEvaluationCaseResult['status'];
|
|
1255
|
+
traceMode?: RAGHybridRetrievalMode;
|
|
1256
|
+
previousTraceMode?: RAGHybridRetrievalMode;
|
|
1257
|
+
transformedQuery?: string;
|
|
1258
|
+
previousTransformedQuery?: string;
|
|
1259
|
+
variantQueries: string[];
|
|
1260
|
+
previousVariantQueries: string[];
|
|
1261
|
+
finalCount: number;
|
|
1262
|
+
previousFinalCount?: number;
|
|
1263
|
+
vectorCount: number;
|
|
1264
|
+
previousVectorCount?: number;
|
|
1265
|
+
lexicalCount: number;
|
|
1266
|
+
previousLexicalCount?: number;
|
|
1267
|
+
candidateTopK: number;
|
|
1268
|
+
previousCandidateTopK?: number;
|
|
1269
|
+
lexicalTopK: number;
|
|
1270
|
+
previousLexicalTopK?: number;
|
|
1271
|
+
stageCounts: Partial<Record<RAGRetrievalTraceStage, number>>;
|
|
1272
|
+
previousStageCounts: Partial<Record<RAGRetrievalTraceStage, number>>;
|
|
1273
|
+
traceChange: 'new' | 'changed' | 'unchanged';
|
|
1274
|
+
};
|
|
1249
1275
|
export type RAGEvaluationHistory = {
|
|
1250
1276
|
suiteId: string;
|
|
1251
1277
|
suiteLabel?: string;
|
|
1252
1278
|
runs: RAGEvaluationSuiteRun[];
|
|
1253
1279
|
leaderboard: RAGEvaluationLeaderboardEntry[];
|
|
1280
|
+
caseTraceSnapshots: RAGEvaluationCaseTraceSnapshot[];
|
|
1254
1281
|
latestRun?: RAGEvaluationSuiteRun;
|
|
1255
1282
|
previousRun?: RAGEvaluationSuiteRun;
|
|
1256
1283
|
diff?: RAGEvaluationRunDiff;
|
|
@@ -1259,6 +1286,17 @@ export type RAGLabelValueRow = {
|
|
|
1259
1286
|
label: string;
|
|
1260
1287
|
value: string;
|
|
1261
1288
|
};
|
|
1289
|
+
export type RAGRetrievalTraceStepPresentation = {
|
|
1290
|
+
stage: RAGRetrievalTraceStage;
|
|
1291
|
+
label: string;
|
|
1292
|
+
count?: number;
|
|
1293
|
+
rows: RAGLabelValueRow[];
|
|
1294
|
+
};
|
|
1295
|
+
export type RAGRetrievalTracePresentation = {
|
|
1296
|
+
stats: RAGLabelValueRow[];
|
|
1297
|
+
details: RAGLabelValueRow[];
|
|
1298
|
+
steps: RAGRetrievalTraceStepPresentation[];
|
|
1299
|
+
};
|
|
1262
1300
|
export type RAGEvaluationLeaderboardEntry = {
|
|
1263
1301
|
runId: string;
|
|
1264
1302
|
suiteId: string;
|
|
@@ -1301,6 +1339,7 @@ export type RAGRerankerComparisonEntry = {
|
|
|
1301
1339
|
providerName?: string;
|
|
1302
1340
|
response: RAGEvaluationResponse;
|
|
1303
1341
|
traceSummary?: RAGRetrievalTraceComparisonSummary;
|
|
1342
|
+
caseTraceSnapshots?: RAGEvaluationCaseTraceSnapshot[];
|
|
1304
1343
|
};
|
|
1305
1344
|
export type RAGRerankerComparisonSummary = {
|
|
1306
1345
|
bestByPassingRate?: string;
|
|
@@ -1320,6 +1359,7 @@ export type RAGRetrievalComparisonEntry = {
|
|
|
1320
1359
|
retrievalMode: RAGHybridRetrievalMode;
|
|
1321
1360
|
response: RAGEvaluationResponse;
|
|
1322
1361
|
traceSummary?: RAGRetrievalTraceComparisonSummary;
|
|
1362
|
+
caseTraceSnapshots?: RAGEvaluationCaseTraceSnapshot[];
|
|
1323
1363
|
};
|
|
1324
1364
|
export type RAGRetrievalComparisonSummary = {
|
|
1325
1365
|
bestByPassingRate?: string;
|
package/dist/vue/ai/index.js
CHANGED
|
@@ -1135,6 +1135,69 @@ var formatTimestampLabel = (value) => {
|
|
|
1135
1135
|
timeStyle: "short"
|
|
1136
1136
|
});
|
|
1137
1137
|
};
|
|
1138
|
+
var formatRAGTraceValue = (value) => {
|
|
1139
|
+
if (typeof value === "string")
|
|
1140
|
+
return value;
|
|
1141
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
1142
|
+
return String(value);
|
|
1143
|
+
}
|
|
1144
|
+
if (Array.isArray(value)) {
|
|
1145
|
+
return value.join(", ");
|
|
1146
|
+
}
|
|
1147
|
+
if (value && typeof value === "object") {
|
|
1148
|
+
return JSON.stringify(value);
|
|
1149
|
+
}
|
|
1150
|
+
return "n/a";
|
|
1151
|
+
};
|
|
1152
|
+
var buildRAGRetrievalTracePresentation = (trace) => {
|
|
1153
|
+
if (!trace) {
|
|
1154
|
+
return {
|
|
1155
|
+
details: [],
|
|
1156
|
+
stats: [],
|
|
1157
|
+
steps: []
|
|
1158
|
+
};
|
|
1159
|
+
}
|
|
1160
|
+
const stats = [
|
|
1161
|
+
{ label: "Mode", value: trace.mode },
|
|
1162
|
+
{ label: "Final Results", value: String(trace.resultCounts.final) },
|
|
1163
|
+
{
|
|
1164
|
+
label: "Vector Candidates",
|
|
1165
|
+
value: String(trace.resultCounts.vector)
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
label: "Lexical Candidates",
|
|
1169
|
+
value: String(trace.resultCounts.lexical)
|
|
1170
|
+
}
|
|
1171
|
+
];
|
|
1172
|
+
const details = [
|
|
1173
|
+
{ label: "Transformed query", value: trace.transformedQuery },
|
|
1174
|
+
{
|
|
1175
|
+
label: "Variant queries",
|
|
1176
|
+
value: trace.variantQueries.length > 0 ? trace.variantQueries.join(" \xB7 ") : "none"
|
|
1177
|
+
},
|
|
1178
|
+
{ label: "Candidate topK", value: String(trace.candidateTopK) },
|
|
1179
|
+
{ label: "Lexical topK", value: String(trace.lexicalTopK) }
|
|
1180
|
+
];
|
|
1181
|
+
const steps = trace.steps.map((step) => ({
|
|
1182
|
+
count: step.count,
|
|
1183
|
+
label: step.label,
|
|
1184
|
+
rows: [
|
|
1185
|
+
{ label: "stage", value: step.stage },
|
|
1186
|
+
...typeof step.count === "number" ? [{ label: "count", value: String(step.count) }] : [],
|
|
1187
|
+
...typeof step.durationMs === "number" ? [{ label: "durationMs", value: String(step.durationMs) }] : [],
|
|
1188
|
+
...Object.entries(step.metadata ?? {}).map(([key, value]) => ({
|
|
1189
|
+
label: key,
|
|
1190
|
+
value: formatRAGTraceValue(value)
|
|
1191
|
+
}))
|
|
1192
|
+
],
|
|
1193
|
+
stage: step.stage
|
|
1194
|
+
}));
|
|
1195
|
+
return {
|
|
1196
|
+
details,
|
|
1197
|
+
stats,
|
|
1198
|
+
steps
|
|
1199
|
+
};
|
|
1200
|
+
};
|
|
1138
1201
|
var formatMediaTimestamp = (value) => {
|
|
1139
1202
|
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
1140
1203
|
return;
|
|
@@ -2154,6 +2217,98 @@ var buildGroundingCaseSnapshots = ({
|
|
|
2154
2217
|
};
|
|
2155
2218
|
});
|
|
2156
2219
|
};
|
|
2220
|
+
var areStageCountsEqual = (left, right) => {
|
|
2221
|
+
const keys = new Set([
|
|
2222
|
+
...Object.keys(left),
|
|
2223
|
+
...Object.keys(right)
|
|
2224
|
+
]);
|
|
2225
|
+
for (const key of keys) {
|
|
2226
|
+
if ((left[key] ?? 0) !== (right[key] ?? 0)) {
|
|
2227
|
+
return false;
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
return true;
|
|
2231
|
+
};
|
|
2232
|
+
var buildEvaluationCaseTraceSnapshot = ({
|
|
2233
|
+
caseResult,
|
|
2234
|
+
currentTrace,
|
|
2235
|
+
previousTrace
|
|
2236
|
+
}) => {
|
|
2237
|
+
const stageCounts = currentTrace ? buildTraceStageCounts([currentTrace]) : {};
|
|
2238
|
+
const previousStageCounts = previousTrace?.stageCounts ?? {};
|
|
2239
|
+
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";
|
|
2240
|
+
return {
|
|
2241
|
+
candidateTopK: currentTrace?.candidateTopK ?? 0,
|
|
2242
|
+
caseId: caseResult.caseId,
|
|
2243
|
+
finalCount: currentTrace?.resultCounts.final ?? 0,
|
|
2244
|
+
label: caseResult.label,
|
|
2245
|
+
lexicalCount: currentTrace?.resultCounts.lexical ?? 0,
|
|
2246
|
+
lexicalTopK: currentTrace?.lexicalTopK ?? 0,
|
|
2247
|
+
previousCandidateTopK: previousTrace?.candidateTopK,
|
|
2248
|
+
previousFinalCount: previousTrace?.finalCount,
|
|
2249
|
+
previousLexicalCount: previousTrace?.lexicalCount,
|
|
2250
|
+
previousLexicalTopK: previousTrace?.lexicalTopK,
|
|
2251
|
+
previousStageCounts,
|
|
2252
|
+
previousTraceMode: previousTrace?.traceMode,
|
|
2253
|
+
previousTransformedQuery: previousTrace?.transformedQuery,
|
|
2254
|
+
previousVariantQueries: previousTrace?.variantQueries ?? [],
|
|
2255
|
+
previousVectorCount: previousTrace?.vectorCount,
|
|
2256
|
+
query: caseResult.query,
|
|
2257
|
+
stageCounts,
|
|
2258
|
+
status: caseResult.status,
|
|
2259
|
+
traceChange,
|
|
2260
|
+
traceMode: currentTrace?.mode,
|
|
2261
|
+
transformedQuery: currentTrace?.transformedQuery || undefined,
|
|
2262
|
+
variantQueries: currentTrace?.variantQueries ?? [],
|
|
2263
|
+
vectorCount: currentTrace?.resultCounts.vector ?? 0
|
|
2264
|
+
};
|
|
2265
|
+
};
|
|
2266
|
+
var buildEvaluationCaseTraceSnapshotsFromEvaluated = (evaluated) => evaluated.map(({ caseResult, trace }) => buildEvaluationCaseTraceSnapshot({
|
|
2267
|
+
caseResult,
|
|
2268
|
+
currentTrace: trace
|
|
2269
|
+
}));
|
|
2270
|
+
var buildEvaluationCaseTraceSnapshots = ({
|
|
2271
|
+
current,
|
|
2272
|
+
previous
|
|
2273
|
+
}) => {
|
|
2274
|
+
if (!current) {
|
|
2275
|
+
return [];
|
|
2276
|
+
}
|
|
2277
|
+
const currentTraces = new Map((current.caseTraceSnapshots ?? []).map((entry) => [entry.caseId, entry]));
|
|
2278
|
+
const previousTraces = new Map((previous?.caseTraceSnapshots ?? []).map((entry) => [
|
|
2279
|
+
entry.caseId,
|
|
2280
|
+
entry
|
|
2281
|
+
]));
|
|
2282
|
+
return current.response.cases.map((caseResult) => buildEvaluationCaseTraceSnapshot({
|
|
2283
|
+
caseResult,
|
|
2284
|
+
currentTrace: (() => {
|
|
2285
|
+
const currentSnapshot = currentTraces.get(caseResult.caseId);
|
|
2286
|
+
if (!currentSnapshot) {
|
|
2287
|
+
return;
|
|
2288
|
+
}
|
|
2289
|
+
return {
|
|
2290
|
+
candidateTopK: currentSnapshot.candidateTopK,
|
|
2291
|
+
lexicalTopK: currentSnapshot.lexicalTopK,
|
|
2292
|
+
mode: currentSnapshot.traceMode ?? "vector",
|
|
2293
|
+
query: caseResult.query,
|
|
2294
|
+
resultCounts: {
|
|
2295
|
+
final: currentSnapshot.finalCount,
|
|
2296
|
+
fused: currentSnapshot.finalCount,
|
|
2297
|
+
lexical: currentSnapshot.lexicalCount,
|
|
2298
|
+
reranked: currentSnapshot.finalCount,
|
|
2299
|
+
vector: currentSnapshot.vectorCount
|
|
2300
|
+
},
|
|
2301
|
+
runLexical: currentSnapshot.lexicalCount > 0,
|
|
2302
|
+
runVector: currentSnapshot.vectorCount > 0,
|
|
2303
|
+
steps: [],
|
|
2304
|
+
topK: caseResult.topK,
|
|
2305
|
+
transformedQuery: currentSnapshot.transformedQuery ?? caseResult.query,
|
|
2306
|
+
variantQueries: currentSnapshot.variantQueries
|
|
2307
|
+
};
|
|
2308
|
+
})(),
|
|
2309
|
+
previousTrace: previousTraces.get(caseResult.caseId)
|
|
2310
|
+
}));
|
|
2311
|
+
};
|
|
2157
2312
|
var getStatusRank = (status) => status === "pass" ? 2 : status === "partial" ? 1 : 0;
|
|
2158
2313
|
var formatSignedDelta = (value, decimals = 0, suffix = "") => `${value >= 0 ? "+" : ""}${value.toFixed(decimals)}${suffix}`;
|
|
2159
2314
|
var formatEvaluationSummary = (response) => `${response.summary.passedCases}/${response.totalCases} pass \xB7 f1 ${response.summary.averageF1.toFixed(3)} \xB7 latency ${response.summary.averageLatencyMs.toFixed(1)}ms`;
|
|
@@ -2313,6 +2468,13 @@ var buildRAGEvaluationHistoryRows = (history) => {
|
|
|
2313
2468
|
rows.push({ label: "Trace stage delta", value: stageDelta });
|
|
2314
2469
|
}
|
|
2315
2470
|
}
|
|
2471
|
+
if (history.caseTraceSnapshots.length > 0) {
|
|
2472
|
+
const changedCases = history.caseTraceSnapshots.filter((entry) => entry.traceChange === "changed");
|
|
2473
|
+
rows.push({
|
|
2474
|
+
label: "Trace drift cases",
|
|
2475
|
+
value: changedCases.length > 0 ? changedCases.map((entry) => entry.label ?? entry.caseId).slice(0, 4).join(", ") : "none"
|
|
2476
|
+
});
|
|
2477
|
+
}
|
|
2316
2478
|
return rows;
|
|
2317
2479
|
};
|
|
2318
2480
|
var buildRAGEvaluationRunDiff = ({
|
|
@@ -2502,6 +2664,10 @@ var loadRAGEvaluationHistory = async ({
|
|
|
2502
2664
|
const latestRun = runs[0];
|
|
2503
2665
|
const previousRun = runs[1];
|
|
2504
2666
|
return {
|
|
2667
|
+
caseTraceSnapshots: buildEvaluationCaseTraceSnapshots({
|
|
2668
|
+
current: latestRun,
|
|
2669
|
+
previous: previousRun
|
|
2670
|
+
}),
|
|
2505
2671
|
diff: latestRun && previousRun ? buildRAGEvaluationRunDiff({
|
|
2506
2672
|
current: latestRun,
|
|
2507
2673
|
previous: previousRun
|
|
@@ -2713,6 +2879,7 @@ var compareRAGRerankers = async ({
|
|
|
2713
2879
|
});
|
|
2714
2880
|
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2715
2881
|
return {
|
|
2882
|
+
caseTraceSnapshots: buildEvaluationCaseTraceSnapshotsFromEvaluated(evaluated),
|
|
2716
2883
|
label: candidate.label ?? candidate.id,
|
|
2717
2884
|
providerName: typeof candidate.rerank === "function" ? undefined : candidate.rerank?.providerName,
|
|
2718
2885
|
response,
|
|
@@ -2799,6 +2966,7 @@ var compareRAGRetrievalStrategies = async ({
|
|
|
2799
2966
|
});
|
|
2800
2967
|
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2801
2968
|
return {
|
|
2969
|
+
caseTraceSnapshots: buildEvaluationCaseTraceSnapshotsFromEvaluated(evaluated),
|
|
2802
2970
|
label: candidate.label ?? candidate.id,
|
|
2803
2971
|
response,
|
|
2804
2972
|
retrievalId: candidate.id,
|
|
@@ -2867,7 +3035,8 @@ var executeDryRunRAGEvaluation = (input, defaultTopK = DEFAULT_TOP_K) => input.c
|
|
|
2867
3035
|
var runRAGEvaluationSuite = async ({
|
|
2868
3036
|
suite,
|
|
2869
3037
|
evaluate,
|
|
2870
|
-
overrides
|
|
3038
|
+
overrides,
|
|
3039
|
+
artifacts
|
|
2871
3040
|
}) => {
|
|
2872
3041
|
const startedAt = Date.now();
|
|
2873
3042
|
const response = await evaluate({
|
|
@@ -2877,6 +3046,7 @@ var runRAGEvaluationSuite = async ({
|
|
|
2877
3046
|
});
|
|
2878
3047
|
const finishedAt = Date.now();
|
|
2879
3048
|
return {
|
|
3049
|
+
caseTraceSnapshots: artifacts?.caseTraceSnapshots,
|
|
2880
3050
|
elapsedMs: finishedAt - startedAt,
|
|
2881
3051
|
finishedAt,
|
|
2882
3052
|
id: generateId(),
|
|
@@ -2884,7 +3054,8 @@ var runRAGEvaluationSuite = async ({
|
|
|
2884
3054
|
metadata: suite.metadata,
|
|
2885
3055
|
response,
|
|
2886
3056
|
startedAt,
|
|
2887
|
-
suiteId: suite.id
|
|
3057
|
+
suiteId: suite.id,
|
|
3058
|
+
traceSummary: artifacts?.traceSummary
|
|
2888
3059
|
};
|
|
2889
3060
|
};
|
|
2890
3061
|
var summarizeRAGEvaluationCase = ({
|
|
@@ -3597,5 +3768,5 @@ export {
|
|
|
3597
3768
|
AIStreamKey
|
|
3598
3769
|
};
|
|
3599
3770
|
|
|
3600
|
-
//# debugId=
|
|
3771
|
+
//# debugId=302ACD06C95EFA1364756E2164756E21
|
|
3601
3772
|
//# sourceMappingURL=index.js.map
|