@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/index.js CHANGED
@@ -4718,6 +4718,69 @@ var formatTimestampLabel = (value) => {
4718
4718
  timeStyle: "short"
4719
4719
  });
4720
4720
  };
4721
+ var formatRAGTraceValue = (value) => {
4722
+ if (typeof value === "string")
4723
+ return value;
4724
+ if (typeof value === "number" || typeof value === "boolean") {
4725
+ return String(value);
4726
+ }
4727
+ if (Array.isArray(value)) {
4728
+ return value.join(", ");
4729
+ }
4730
+ if (value && typeof value === "object") {
4731
+ return JSON.stringify(value);
4732
+ }
4733
+ return "n/a";
4734
+ };
4735
+ var buildRAGRetrievalTracePresentation = (trace) => {
4736
+ if (!trace) {
4737
+ return {
4738
+ details: [],
4739
+ stats: [],
4740
+ steps: []
4741
+ };
4742
+ }
4743
+ const stats = [
4744
+ { label: "Mode", value: trace.mode },
4745
+ { label: "Final Results", value: String(trace.resultCounts.final) },
4746
+ {
4747
+ label: "Vector Candidates",
4748
+ value: String(trace.resultCounts.vector)
4749
+ },
4750
+ {
4751
+ label: "Lexical Candidates",
4752
+ value: String(trace.resultCounts.lexical)
4753
+ }
4754
+ ];
4755
+ const details = [
4756
+ { label: "Transformed query", value: trace.transformedQuery },
4757
+ {
4758
+ label: "Variant queries",
4759
+ value: trace.variantQueries.length > 0 ? trace.variantQueries.join(" \xB7 ") : "none"
4760
+ },
4761
+ { label: "Candidate topK", value: String(trace.candidateTopK) },
4762
+ { label: "Lexical topK", value: String(trace.lexicalTopK) }
4763
+ ];
4764
+ const steps = trace.steps.map((step) => ({
4765
+ count: step.count,
4766
+ label: step.label,
4767
+ rows: [
4768
+ { label: "stage", value: step.stage },
4769
+ ...typeof step.count === "number" ? [{ label: "count", value: String(step.count) }] : [],
4770
+ ...typeof step.durationMs === "number" ? [{ label: "durationMs", value: String(step.durationMs) }] : [],
4771
+ ...Object.entries(step.metadata ?? {}).map(([key, value]) => ({
4772
+ label: key,
4773
+ value: formatRAGTraceValue(value)
4774
+ }))
4775
+ ],
4776
+ stage: step.stage
4777
+ }));
4778
+ return {
4779
+ details,
4780
+ stats,
4781
+ steps
4782
+ };
4783
+ };
4721
4784
  var formatMediaTimestamp = (value) => {
4722
4785
  if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
4723
4786
  return;
@@ -5677,6 +5740,98 @@ var buildGroundingCaseSnapshots = ({
5677
5740
  };
5678
5741
  });
5679
5742
  };
5743
+ var areStageCountsEqual = (left, right) => {
5744
+ const keys = new Set([
5745
+ ...Object.keys(left),
5746
+ ...Object.keys(right)
5747
+ ]);
5748
+ for (const key of keys) {
5749
+ if ((left[key] ?? 0) !== (right[key] ?? 0)) {
5750
+ return false;
5751
+ }
5752
+ }
5753
+ return true;
5754
+ };
5755
+ var buildEvaluationCaseTraceSnapshot = ({
5756
+ caseResult,
5757
+ currentTrace,
5758
+ previousTrace
5759
+ }) => {
5760
+ const stageCounts = currentTrace ? buildTraceStageCounts([currentTrace]) : {};
5761
+ const previousStageCounts = previousTrace?.stageCounts ?? {};
5762
+ 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";
5763
+ return {
5764
+ candidateTopK: currentTrace?.candidateTopK ?? 0,
5765
+ caseId: caseResult.caseId,
5766
+ finalCount: currentTrace?.resultCounts.final ?? 0,
5767
+ label: caseResult.label,
5768
+ lexicalCount: currentTrace?.resultCounts.lexical ?? 0,
5769
+ lexicalTopK: currentTrace?.lexicalTopK ?? 0,
5770
+ previousCandidateTopK: previousTrace?.candidateTopK,
5771
+ previousFinalCount: previousTrace?.finalCount,
5772
+ previousLexicalCount: previousTrace?.lexicalCount,
5773
+ previousLexicalTopK: previousTrace?.lexicalTopK,
5774
+ previousStageCounts,
5775
+ previousTraceMode: previousTrace?.traceMode,
5776
+ previousTransformedQuery: previousTrace?.transformedQuery,
5777
+ previousVariantQueries: previousTrace?.variantQueries ?? [],
5778
+ previousVectorCount: previousTrace?.vectorCount,
5779
+ query: caseResult.query,
5780
+ stageCounts,
5781
+ status: caseResult.status,
5782
+ traceChange,
5783
+ traceMode: currentTrace?.mode,
5784
+ transformedQuery: currentTrace?.transformedQuery || undefined,
5785
+ variantQueries: currentTrace?.variantQueries ?? [],
5786
+ vectorCount: currentTrace?.resultCounts.vector ?? 0
5787
+ };
5788
+ };
5789
+ var buildEvaluationCaseTraceSnapshotsFromEvaluated = (evaluated) => evaluated.map(({ caseResult, trace }) => buildEvaluationCaseTraceSnapshot({
5790
+ caseResult,
5791
+ currentTrace: trace
5792
+ }));
5793
+ var buildEvaluationCaseTraceSnapshots = ({
5794
+ current,
5795
+ previous
5796
+ }) => {
5797
+ if (!current) {
5798
+ return [];
5799
+ }
5800
+ const currentTraces = new Map((current.caseTraceSnapshots ?? []).map((entry) => [entry.caseId, entry]));
5801
+ const previousTraces = new Map((previous?.caseTraceSnapshots ?? []).map((entry) => [
5802
+ entry.caseId,
5803
+ entry
5804
+ ]));
5805
+ return current.response.cases.map((caseResult) => buildEvaluationCaseTraceSnapshot({
5806
+ caseResult,
5807
+ currentTrace: (() => {
5808
+ const currentSnapshot = currentTraces.get(caseResult.caseId);
5809
+ if (!currentSnapshot) {
5810
+ return;
5811
+ }
5812
+ return {
5813
+ candidateTopK: currentSnapshot.candidateTopK,
5814
+ lexicalTopK: currentSnapshot.lexicalTopK,
5815
+ mode: currentSnapshot.traceMode ?? "vector",
5816
+ query: caseResult.query,
5817
+ resultCounts: {
5818
+ final: currentSnapshot.finalCount,
5819
+ fused: currentSnapshot.finalCount,
5820
+ lexical: currentSnapshot.lexicalCount,
5821
+ reranked: currentSnapshot.finalCount,
5822
+ vector: currentSnapshot.vectorCount
5823
+ },
5824
+ runLexical: currentSnapshot.lexicalCount > 0,
5825
+ runVector: currentSnapshot.vectorCount > 0,
5826
+ steps: [],
5827
+ topK: caseResult.topK,
5828
+ transformedQuery: currentSnapshot.transformedQuery ?? caseResult.query,
5829
+ variantQueries: currentSnapshot.variantQueries
5830
+ };
5831
+ })(),
5832
+ previousTrace: previousTraces.get(caseResult.caseId)
5833
+ }));
5834
+ };
5680
5835
  var getStatusRank = (status) => status === "pass" ? 2 : status === "partial" ? 1 : 0;
5681
5836
  var formatSignedDelta = (value, decimals = 0, suffix = "") => `${value >= 0 ? "+" : ""}${value.toFixed(decimals)}${suffix}`;
5682
5837
  var formatEvaluationSummary = (response) => `${response.summary.passedCases}/${response.totalCases} pass \xB7 f1 ${response.summary.averageF1.toFixed(3)} \xB7 latency ${response.summary.averageLatencyMs.toFixed(1)}ms`;
@@ -5836,6 +5991,13 @@ var buildRAGEvaluationHistoryRows = (history) => {
5836
5991
  rows.push({ label: "Trace stage delta", value: stageDelta });
5837
5992
  }
5838
5993
  }
5994
+ if (history.caseTraceSnapshots.length > 0) {
5995
+ const changedCases = history.caseTraceSnapshots.filter((entry) => entry.traceChange === "changed");
5996
+ rows.push({
5997
+ label: "Trace drift cases",
5998
+ value: changedCases.length > 0 ? changedCases.map((entry) => entry.label ?? entry.caseId).slice(0, 4).join(", ") : "none"
5999
+ });
6000
+ }
5839
6001
  return rows;
5840
6002
  };
5841
6003
  var buildRAGEvaluationRunDiff = ({
@@ -6025,6 +6187,10 @@ var loadRAGEvaluationHistory = async ({
6025
6187
  const latestRun = runs[0];
6026
6188
  const previousRun = runs[1];
6027
6189
  return {
6190
+ caseTraceSnapshots: buildEvaluationCaseTraceSnapshots({
6191
+ current: latestRun,
6192
+ previous: previousRun
6193
+ }),
6028
6194
  diff: latestRun && previousRun ? buildRAGEvaluationRunDiff({
6029
6195
  current: latestRun,
6030
6196
  previous: previousRun
@@ -6236,6 +6402,7 @@ var compareRAGRerankers = async ({
6236
6402
  });
6237
6403
  const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
6238
6404
  return {
6405
+ caseTraceSnapshots: buildEvaluationCaseTraceSnapshotsFromEvaluated(evaluated),
6239
6406
  label: candidate.label ?? candidate.id,
6240
6407
  providerName: typeof candidate.rerank === "function" ? undefined : candidate.rerank?.providerName,
6241
6408
  response,
@@ -6322,6 +6489,7 @@ var compareRAGRetrievalStrategies = async ({
6322
6489
  });
6323
6490
  const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
6324
6491
  return {
6492
+ caseTraceSnapshots: buildEvaluationCaseTraceSnapshotsFromEvaluated(evaluated),
6325
6493
  label: candidate.label ?? candidate.id,
6326
6494
  response,
6327
6495
  retrievalId: candidate.id,
@@ -6390,7 +6558,8 @@ var executeDryRunRAGEvaluation = (input, defaultTopK = DEFAULT_TOP_K2) => input.
6390
6558
  var runRAGEvaluationSuite = async ({
6391
6559
  suite,
6392
6560
  evaluate,
6393
- overrides
6561
+ overrides,
6562
+ artifacts
6394
6563
  }) => {
6395
6564
  const startedAt = Date.now();
6396
6565
  const response = await evaluate({
@@ -6400,6 +6569,7 @@ var runRAGEvaluationSuite = async ({
6400
6569
  });
6401
6570
  const finishedAt = Date.now();
6402
6571
  return {
6572
+ caseTraceSnapshots: artifacts?.caseTraceSnapshots,
6403
6573
  elapsedMs: finishedAt - startedAt,
6404
6574
  finishedAt,
6405
6575
  id: generateId(),
@@ -6407,7 +6577,8 @@ var runRAGEvaluationSuite = async ({
6407
6577
  metadata: suite.metadata,
6408
6578
  response,
6409
6579
  startedAt,
6410
- suiteId: suite.id
6580
+ suiteId: suite.id,
6581
+ traceSummary: artifacts?.traceSummary
6411
6582
  };
6412
6583
  };
6413
6584
  var summarizeRAGEvaluationCase = ({
@@ -11514,6 +11685,7 @@ export {
11514
11685
  geminiEmbeddings,
11515
11686
  gemini,
11516
11687
  fuseRAGQueryResults,
11688
+ formatRAGTraceValue,
11517
11689
  executeDryRunRAGEvaluation,
11518
11690
  evaluateRAGCollection,
11519
11691
  evaluateRAGAnswerGroundingCase,
@@ -11576,6 +11748,7 @@ export {
11576
11748
  buildRAGStreamProgress,
11577
11749
  buildRAGSourceSummaries,
11578
11750
  buildRAGSourceGroups,
11751
+ buildRAGRetrievalTracePresentation,
11579
11752
  buildRAGLexicalHaystack,
11580
11753
  buildRAGGroundingReferences,
11581
11754
  buildRAGGroundedAnswer,
@@ -11601,5 +11774,5 @@ export {
11601
11774
  aiChat
11602
11775
  };
11603
11776
 
11604
- //# debugId=3488A515C459B2F064756E2164756E21
11777
+ //# debugId=2E0B1A7677E438F664756E2164756E21
11605
11778
  //# sourceMappingURL=index.js.map