@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.
@@ -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;
@@ -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=49142334D6D3EC2564756E2164756E21
3771
+ //# debugId=302ACD06C95EFA1364756E2164756E21
3601
3772
  //# sourceMappingURL=index.js.map