@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.
@@ -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=119AFB5A8066203F64756E2164756E21
3108
+ //# debugId=0D0362F3A383A2F164756E2164756E21
2938
3109
  //# sourceMappingURL=index.js.map